WPF Caliburn Micro TreeView HierarchicalDataTemplate 节点扩展事件
Posted
技术标签:
【中文标题】WPF Caliburn Micro TreeView HierarchicalDataTemplate 节点扩展事件【英文标题】:WPF Caliburn Micro TreeView HierarchicalDataTemplate Node Expanded Event 【发布时间】:2013-03-22 03:21:46 【问题描述】:我高高在上,在这儿砸头太久了。使用 MVVM、Caliburn Micro、WPF、XAML,并尝试将数据后期绑定到节点。我已经对第一级或第二级进行了数据绑定,并且我想观察节点上的“扩展”事件,这样我就可以检查我的小延迟获取子节点,也许可以获取数据并增长树。我已经尝试了很多事情,我想我现在已经准备好了,我应该能够基本上做到..
Message.Attach="[Event TreeViewItem.Expanded] = [Action NodeExpanding($this)]"
但这永远不会触发......在同一级别,以下工作正常:
Message.Attach="[Event SelectedItemChanged] = [Action SetSelectedItem($this.SelectedItem)]"
而且我确实让这个事件在我的 ViewModel 上很好地触发了,所以我必须接近......
任何帮助表示赞赏! tnx, -J
【问题讨论】:
【参考方案1】:我的猜测(可能很接近)是它可能与节点的DataContext
有关。 CM 默认使用DataContext
作为操作的目标,因此在没有明确设置上下文的情况下,您会尝试针对绑定到节点的数据项触发事件,当然数据项没有任何处理这个问题的方法。
您仍然可以通过在树视图项上设置 Action.TargetWithoutContext
附加属性来设置操作目标 - 这样 CM 就知道在哪里查找连接消息
通常我发现绑定到祖先是最简单的:
<TreeViewItem
cal:Action.TargetWithoutContext="
Binding DataContext,
RelativeSource=RelativeSource AncestorType=UserControl" />
或者你也可以使用ElementName
,只要记住你需要指向目标ViewModel,这将是父容器的DataContext
。我曾多次忘记使用DataContext
,并为它为什么不起作用而挠头(您没有遇到绑定错误,因为您的绑定仍然有效但它只是不起作用 - CM LogManager.GetLog()在这里有帮助!)
【讨论】:
谢谢@Charleh Action.TargetEithoutContext 似乎很有希望!明天我会试一试,让你知道我的结局。 -J @James 你有没有解决这个问题?我无法让它工作以上是关于WPF Caliburn Micro TreeView HierarchicalDataTemplate 节点扩展事件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Caliburn.Micro 的单实例 WPF 应用程序
使用 WPF 和 Caliburn.Micro 在视图中添加多个视图
C# WPF MVVM开发框架Caliburn.Micro入门介绍①
使用 Caliburn.Micro 4.0.x 和 WPF 的对话框