我有一个TreeView,我将它关联到一个ContextMenu。该contextmenu有一个项目,我想要绑定到我的ViewModel的IsChecked属性。由于我正在使用树,因此每个treeitem都绑定到ViewModel的子属性。WPF Treeview contextmenu IsChecked绑定MVVM
在VS2010输出窗口我看到这个数据绑定错误:
BindingExpression路径错误:对 '对象' '' HostMgmtViewModel '(的HashCode = 12565727)' 未找到 'IsAutoStart' 属性。 BindingExpression:路径= IsAutoStart; DataItem ='HostMgmtViewModel'
这清楚地表明它试图绑定到我的ViewModel而不是绑定到treeitem的关联数据。我如何绑定到正确的对象?请记住,我的contextmenu与整个TreeView关联,而不是与特定的Treeitem关联。
----------编辑
由于xandy指出了解决我的问题下面是绑定器isChecked这样的:
{Binding Path=PlacementTarget.SelectedItem.IsDisabledStart, Mode=OneWay, RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}
而这个绑定进入ContextMenu?当我尝试得到这个错误时:'绑定'不能在'ItemCollection'集合中使用。 '绑定'只能在DependencyObject的DependencyProperty上设置。 – BrettRobi 2010-03-27 01:47:25
顺便说一句,我以前的答案是假设像上面的文本块例子,但适用于menuitem头。菜单项没有遇到任何错误,但它不起作用。你得到了DependencyObject ...错误,因为你绑定了数据源,但不是属性。 – xandy 2010-03-27 02:59:51
谢谢xandy,你的样品给了我正确的答案。我结束了菜单项IsChecked绑定到这个: {Binding Path = PlacementTarget.SelectedItem.IsAutoStart,Mode = OneWay,RelativeSource = {RelativeSource AncestorType = {x:Type ContextMenu}}} – BrettRobi 2010-03-27 14:30:26