TreeViewItem在悬停时通知ViewModel

时间:2013-04-19 20:13:19

标签: c# wpf treeviewitem

我目前正在使用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),以便我可以在代码中对这些更改做出反应?

我通过谷歌找到的所有例子都只解释了如何设置背景颜色。提前感谢您花时间回答这个问题。

1 个答案:

答案 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