Fire Checked和unchecked事件DataGridTemplateColumn.CellEditingTemplate - DataTemplate复选框

时间:2014-08-05 13:06:47

标签: wpf xaml datagrid

是否可以仅在DataGridTemplateColumn.CellEditingTemplate中触发事件

当我选中并取消选中复选框时,以下代码不会触发..

<DataGridTemplateColumn.CellEditingTemplate>
                  <DataTemplate>
                     <CheckBox IsThreeState="True" Unchecked="Event" Checked="Event" IsChecked="{Binding Property, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" HorizontalAlignment="Center"></CheckBox>
                  </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>

但是,它将使用DataGridTemplateColumn.CellTemplate

<DataGridTemplateColumn.CellTemplate>
                  <DataTemplate>
                     <CheckBox IsThreeState="True" Unchecked="Event" Checked="Event" IsChecked="{Binding Property, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" HorizontalAlignment="Center"></CheckBox>
                  </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

但这会导致事件在视图加载时触发,从而导致后端出现问题。我只希望事件在编辑模式下触发,这可能吗?

谢谢

1 个答案:

答案 0 :(得分:1)

而不是Checked&amp;未经检查的事件,您可以使用CheckBox的单击事件,然后从事件处理程序

获取检查状态
<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding TestBool}" Click="CheckBox_Click" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

代码

private void CheckBox_Click(object sender, RoutedEventArgs e)
{
    var result = (sender as CheckBox).IsChecked;
}