WPF Caliburn Micro TreeView HierarchicalDataTemplate节点扩展事件

时间:2013-04-01 02:26:55

标签: wpf treeview caliburn.micro hierarchicaldatatemplate

我看起来又高又低,在这里砸了太久。使用MVVM,Caliburn Micro,WPF,XAML,并尝试将数据延迟绑定到节点。我有数据绑定第一级或第二级,我想在节点上观察“Expanded”事件,这样我就可以检查我的小后期获取子节点,也许还可以获取数据并增长树。我已经尝试了很多东西,我想我现在已经确定了我应该能够做的事情。

Message.Attach="[Event TreeViewItem.Expanded] = [Action NodeExpanding($this)]"

但这并不会激发......在同一级别,以下工作正常:

Message.Attach="[Event SelectedItemChanged] = [Action SetSelectedItem($this.SelectedItem)]" 

我确实让这个事件在我的ViewModel上得到了很好的解决,所以我必须要关闭......

任何帮助表示赞赏! tnx,-J

1 个答案:

答案 0 :(得分:0)

我的猜测(可能很接近)是它可能与节点的DataContext有关。默认情况下,CM使用DataContext作为操作的目标,因此,如果没有明确设置上下文,您将尝试针对绑定到节点的数据项触发事件,当然数据项不会有办法解决这个问题。

您仍然可以通过在树视图项目上设置Action.TargetWithoutContext附加属性来设置操作的目标 - 这样CM知道在哪里查找连接消息

通常我发现绑定祖先是最简单的:

<TreeViewItem cal:Action.TargetWithoutContext="{Binding DataContext, RelativeSource={RelativeSource AncestorType=UserControl}}" />

或者您可以使用ElementName,无论对您有用,只需记住您需要指向目标ViewModel,它将是父容器的DataContext 。我忘记了几次使用DataContext并且摸不着为什么它不起作用(你没有绑定错误,因为你的绑定仍然有效,但它只是不起作用 - CM LogManager.GetLog ()帮助到这里!)