2017-02-27 35 views
1

我有这样的事情:DataGrid单元格内获得控制

<DataGridTemplateColumn Header="Occurences" Width="Auto"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Path=Occurences, Converter={StaticResource ListConverter}, Mode=TwoWay}" Margin="5,5,10,5"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    <DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <myCustomControls:OccurencesManualEntry/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellEditingTemplate> 
</DataGridTemplateColumn> 

当前行,当我在这个网格的另一列,是否有可能得到<myCustomControls:OccurencesManualEntry/>,所以我可以设置它的一些属性?

+0

不,不是因为OccurenceManualEntry控件只存在,所以Occurences单元处于编辑模式。 – mm8

回答

2

是否有可能获得<myCustomControls:OccurencesManualEntry/>以便我可以设置它的一些属性?

不,这不是因为OccurencesManualEntry控件仅在“发生”单元处于编辑模式时才存在。

你可以是什么的依赖属性这一块添加到OccurencesManualEntry控制并绑定到您的数据对象的来源属性:

<myCustomControls:OccurencesManualEntry SomeProperty="{Binding SourceProperty}"/> 

然后,您可以从另一个单元格设置此源属性:

<DataGridTemplateColumn.CellEditingTemplate> 
    <DataTemplate> 
     <TextBox TextChanged="TextBox_TextChanged" /> 
    </DataTemplate> 
</DataGridTemplateColumn.CellEditingTemplate> 

private void TextBox_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    TextBox txtBox = sender as TextBox; 
    var yourDataObject = txtBox.DataContext as YourDataClass; 
    yourDataObject.SourceProperty = "value..."; 
} 

确保数据类实现INotifyPropertyChanged接口并在源属性的setter中引发PropertyChanged事件。

+0

这将是标准的MVVM方法。 – dotNET