2

我高高在上,在这儿砸头太久了。使用 MVVM、Caliburn Micro、WPF、XAML,并尝试将数据后期绑定到节点。我已经对第一级或第二级进行了数据绑定,并且我想观察节点上的“扩展”事件,这样我就可以检查我的小延迟获取子节点,也许可以获取数据并增长树。我已经尝试了很多事情,我想我现在已经准备好了,我应该能够做到。

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

但这永远不会触发......在同一级别,以下工作正常:

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

而且我确实让这个事件在我的 ViewModel 上很好地触发,所以我必须接近......

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

4

1 回答 1

0

我的猜测(可能很接近)是它可能与DataContext节点有关。CMDataContext默认将 用作操作的目标,因此在没有明确设置上下文的情况下,您会尝试针对绑定到节点的数据项触发事件,当然数据项没有任何处理方式这个。

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

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

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

或者您可以使用ElementName任何适合您的方法,只要记住您需要指向目标 ViewModel ,这将是DataContext父容器的。我曾DataContext多次忘记使用它,并为它为什么不起作用而挠头(您没有遇到绑定错误,因为您的绑定仍然有效但它只是不起作用 - CM LogManager.GetLog() 在这里有帮助! )

于 2013-04-01T03:33:34.323 回答