我正在尝试获取和处理MouseEnter
中的MouseLeave
和DataGridCheckBoxColumn
事件:
<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绑定到CheckBox
或DataGridCell
编辑:更新
<DataGrid>
<DataGrid.Columns>
<DataGridCheckBoxColumn>
<DataGridCheckBoxColumn.CellStyle>
<Style>
<EventSetter Event="CheckBox.MouseEnter" Handler="CheckBox_MouseEnter"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
</DataGrid.Columns>
</DataGrid>