如何获取复选框列发件人的数据网格父级
Posted
技术标签:
【中文标题】如何获取复选框列发件人的数据网格父级【英文标题】:How to get the checkbox column sender's datagrid parent 【发布时间】:2018-09-24 01:56:46 【问题描述】:您好,我有一个数据网格(下面的 xaml 代码):
<DataGrid.Columns>
<DataGridTextColumn Header="FLEET" IsReadOnly="True" Width="1*" Binding="Binding FLEET, UpdateSourceTrigger=PropertyChanged" />
<DataGridTemplateColumn Header="SELECTED?" Width="1*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Viewbox Margin="-0.2" Height="18.5">
<CheckBox IsThreeState="True" IsChecked="Binding Path=isSelected, UpdateSourceTrigger=PropertyChanged" Click="FSC_CheckBox_Click"/>
</Viewbox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
点击事件:
private void FSC_CheckBox_Click(object sender, RoutedEventArgs e)
......
有没有办法从点击发送者那里获取父数据网格对象?我试过这个链接 Get containing row from a CheckBox inside of a DataGrid,但由于视图框和数据模板(我猜),它不起作用。 任何建议表示赞赏。谢谢。
【问题讨论】:
【参考方案1】:点击事件处理程序将获取发送者,您可以将其强制转换为复选框。 我认为最简单的方法是滥用复选框上的 Tag 属性。 这可以是您喜欢的任何旧物件。 您可以为此使用相对源绑定。 比如:
<CheckBox Tag="Binding RelativeSource=Relativesource AncestorType=DataGrid"
粗略地把它拿下来:
private void FSC_CheckBox_Click(object sender, RoutedEventArgs e)
var cb=(CheckBox)sender;
var parentDataGrid = (DataGrid)cb.Tag;
这是空气代码,我没有带有复选框和点击处理程序的数据网格可以轻松尝试,因此可能会出现一些错字。
【讨论】:
以上是关于如何获取复选框列发件人的数据网格父级的主要内容,如果未能解决你的问题,请参考以下文章