我有一個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