控制数据网格单元格内部

时间:2017-02-27 19:00:58

标签: c# wpf vb.net xaml

我有这样的事情:

<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/> 以便我可以设置其某些属性?

1 个答案:

答案 0 :(得分:2)

  

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

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

您可以将依赖项属性添加到OccurencesManualEntry控件并将此绑定绑定到数据对象的source属性:

<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接口,并在source属性的setter中引发PropertyChanged事件。