如何获取复选框列发件人的数据网格父级
How to get the checkbox column sender's datagrid parent
嗨,我有一个数据网格(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)
{
......
}
有没有办法从点击发送者那里得到父数据网格对象?我试过这个 link
Get containing row from a CheckBox inside of a DataGrid,但由于视图框和数据模板(我猜),它不起作用。
任何建议表示赞赏。谢谢。
点击事件处理程序将获取发件人,您可以将其转换为复选框。
我认为最简单的方法是滥用复选框上的标签 属性。
那可以是你喜欢的任何旧物件。
您可以为此使用相对源绑定。
类似于:
<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;
}
这是 air 代码,我没有带复选框和点击处理程序的数据网格来轻松试用,因此可能存在一些打字错误。
嗨,我有一个数据网格(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)
{
......
}
有没有办法从点击发送者那里得到父数据网格对象?我试过这个 link Get containing row from a CheckBox inside of a DataGrid,但由于视图框和数据模板(我猜),它不起作用。 任何建议表示赞赏。谢谢。
点击事件处理程序将获取发件人,您可以将其转换为复选框。
我认为最简单的方法是滥用复选框上的标签 属性。
那可以是你喜欢的任何旧物件。
您可以为此使用相对源绑定。
类似于:
<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;
}
这是 air 代码,我没有带复选框和点击处理程序的数据网格来轻松试用,因此可能存在一些打字错误。