我目前正在使用this blogpost中的代码,以便让我的TreeView突出显示当前由鼠标悬停的项目。这是按预期工作的,但是现在我希望TreeViewItems在它们悬停/不悬停时通知它们附加的ViewModel。
然而,我对如何实现这一目标感到茫然。相应的XAML代码如下所示:
<Style TargetType="{x:Type TreeViewItem}">
<Style.Triggers>
<Trigger Property="Controls:TreeViewHelper.IsMouseDirectlyOverItem" Value="True">
<Setter Property="Background" Value="Green" />
</Trigger>
</Stile.Triggers>
</Style>
如何将我的ViewModel(名为TreeNodeModel.IsHovered)中的属性绑定到TreeViewItem(或者可能是附加的依赖项属性IsMouseDirectlyOverItem),以便我可以在代码中对这些更改做出反应?
我通过谷歌找到的所有例子都只解释了如何设置背景颜色。提前感谢您花时间回答这个问题。
答案 0 :(得分:1)
在Style
中,尝试添加将Setter
绑定到IsMouseDirectlyOverItem
的{{1}},并使用IsHovered
绑定模式以正确的方式推送值:
OneWayToSource
编辑:由于<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="Controls:TreeViewHelper.IsMouseDirectlyOverItem"
Value="{Binding Path=IsHovered, Mode=OneWayToSource}" />
<Style.Triggers>
...
</Style>
是只读的,并且只读的DP不能成为任何绑定的目标,Fredrik Hedblad的IsMouseDirectlyOver
可能是一种可能的解决方法:OneWayToSource Binding for ReadOnly Dependency Property
PushBinding