MVVM wpf TreeView 如何处理 Expanded 事件
MVVM wpf TreeView how to handle Expanded event
我正在实施延迟加载树视图,需要处理 Expanded 事件。我想直接在 ViewModel 中进行。我连接了一个 EventTrigger:
<i:Interaction.Triggers>
<i:EventTrigger EventName="Expanded">
<interactivity:InvokeCommandAction Command="{Binding HandleExpandCmd}" TriggerParameterPath="OriginalSource" />
</i:EventTrigger>
</i:Interaction.Triggers>
虽然这按预期工作,但 OriginalSource 是一个 TreeViewItem,我更愿意不在我的 ViewModel 中包含 System.Windows.Controls。
或者,我可以在代码隐藏中处理事件,并将 TreeViewItems 的 DataContext 传递给 ViewModel。 (当然,DataContext 是 ViewModel 需要处理的。)
有没有我可以在传递 TVI 的 DataContext 而不是 TVI 本身的 TriggerParameterPath 中使用的语法?
谢谢---
我建议将 TreeViewItem
的 IsExpanded
属性 绑定到您的 ViewModel 中的一个。然后你可以在 ViewModel 中随心所欲地处理它!
Here is an example of how to do that.
我正在实施延迟加载树视图,需要处理 Expanded 事件。我想直接在 ViewModel 中进行。我连接了一个 EventTrigger:
<i:Interaction.Triggers>
<i:EventTrigger EventName="Expanded">
<interactivity:InvokeCommandAction Command="{Binding HandleExpandCmd}" TriggerParameterPath="OriginalSource" />
</i:EventTrigger>
</i:Interaction.Triggers>
虽然这按预期工作,但 OriginalSource 是一个 TreeViewItem,我更愿意不在我的 ViewModel 中包含 System.Windows.Controls。
或者,我可以在代码隐藏中处理事件,并将 TreeViewItems 的 DataContext 传递给 ViewModel。 (当然,DataContext 是 ViewModel 需要处理的。)
有没有我可以在传递 TVI 的 DataContext 而不是 TVI 本身的 TriggerParameterPath 中使用的语法?
谢谢---
我建议将 TreeViewItem
的 IsExpanded
属性 绑定到您的 ViewModel 中的一个。然后你可以在 ViewModel 中随心所欲地处理它!
Here is an example of how to do that.