用户将鼠标光标放在一行上时,是否可以使用一个事件?基本上我需要在光标更改行时更改行的工具提示
到目前为止我有这样的事情
<Style TargetType="DataGridRow">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<EventSetter Event="PreviewMouseMove" Handler="MouseMoveEvent"></EventSetter>
</Trigger>
</Style.Triggers>
</Style>
但这并不完全有效。
谢谢
你不能把它EventSetter
放在普通的里面Trigger
。看起来EventSetter
只能在内部使用Style.Setters
(不能使用Trigger.Setters
),请参见此处,在“备注”部分的最后一行。
在这种情况下,我认为您不需要动态更改处理程序,只需挂接事件一次即可。所以放在EventSetter
里面Style.Setters
。同样,最适合您的事件是MouseEnter
,而不是PreviewMouseMove
:
<Style TargetType="DataGridRow">
<EventSetter Event="MouseEnter" Handler="Row_MouseEnter"/>
</Style>
后面的代码:
private void Row_MouseEnter(object sender, MouseEventArgs e){
//put your code here to set the ToolTip for each row
//Here I just set the ToolTip to the index of the row
var row = e.Source as DataGridRow;
row.ToolTip = row.GetIndex().ToString();
}
另一个解决方案是命名您的名称,DataGrid
以便我们可以在后面的代码中引用它。然后为事件添加处理程序LoadingRow
。您可以在此处为每一行设置工具提示:
//inside the Window constructor after IntializeComponent()
dataGrid1.LoadingRow += (s,e) => {
e.Row.Tooltip = e.Row.GetIndex().ToString();
};
另外,您应该考虑使用“绑定”来设置工具提示。这样,您需要一个合适的ViewModel。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句