DataGridCheckBoxColumn

DataGridCheckBoxColumn

我正在尝试获取和处理MouseEnter中的MouseLeaveDataGridCheckBoxColumn事件:

<DataGridCheckBoxColumn Header="MyHeader" Binding="{Binding Path=MyPath, UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding Data.VisibilityPath, Source={StaticResource Proxy}}" />


但是,如果使用Mouse.MouseEnter = MyEventHandler,则会收到以下错误消息:


  抑制状态错误'MyEventHandler'无效。 'MouseEnter'
  不是“ System.Windows.Controls.DataGridCheckBoxColumn”上的事件。


解决此问题的唯一方法是创建自己的包含复选框的DataGridTemplateColumn并直接使用复选框上的事件吗?这将是不幸的,因为我必须在较旧的代码上执行此操作,并且不想重写所有数据网格。

最佳答案

Visual Tree of DataGrid

DataGrid的可视树中,没有任何控件是DataGridCheckBoxColumn的类型,您应该将EventSetter绑定到CheckBoxDataGridCell

编辑:更新

<DataGrid>
    <DataGrid.Columns>
        <DataGridCheckBoxColumn>
            <DataGridCheckBoxColumn.CellStyle>
                <Style>
                    <EventSetter Event="CheckBox.MouseEnter" Handler="CheckBox_MouseEnter"/>
                </Style>
            </DataGridCheckBoxColumn.CellStyle>
        </DataGridCheckBoxColumn>
    </DataGrid.Columns>
</DataGrid>

10-06 09:41