样式中的MVVM-Light EventToCommand

时间:2019-05-03 14:43:48

标签: .net treeview styles mvvm-light eventtocommand

我有一个标准的WPF TreeView控件。 TreeViewItem带有一个箭头,如果展开TreeViewItem节点,该箭头会旋转。

如果选择了其子级之一,则TreeView默认将突出显示设置为折叠的节点。我设法确保当一个节点折叠时,我的VM上的SelectedItem不会更新,即使如果以前选择了一个子节点,控件中的选择图形也会跳到该节点。 (我通过将TreeView上的MouseUp事件绑定到我的VM上的命令而不是使用SelectedItemChanged来解决,我将SelectedItem作为commandaparameter提供,这样,除非用户真正单击节点,否则我的VM上的SelectedItem不会更改)

问题是,当人们再次使用箭头扩展折叠的节点时,我希望选择突出显示再次跳回子节点,这实际上是VM上我的集合中具有其属性IsSelected设置为的项目。是的。

如果我可以在MouseDown上的VM上触发一个命令,或者当ToggleButton被选中时,我可能可以解决此问题。

问题是,我没有找到一种方法来强制通过应用样式将TreeView的ToggleButton上的MouseDown事件触发我的VM上的命令。可能吗?如果是这样,怎么能做到这一点。我使用MVVM-Light,因此最好使用EventToCommand,但这似乎在Style中根本不起作用?

我想做什么...(并影响到TreeView中的ToggleButton)

 <Style TargetType="{x:Type ToggleButton}">
 <i:Interaction.Triggers>
   <i:EventTrigger EventName="MouseDown">
     <command:EventToCommand Command="{Binding UpdateTreeState}"/>
   </i:EventTrigger>
  </i:Interaction.Triggers>
 </Style>

0 个答案:

没有答案