2010-11-26 83 views
2

我有一個網格的上下文菜單的MenuItem,它的IsEnabled屬性綁定到MyProperty。它正常工作,直到我實際上點擊MenuItem的事件處理程序,它沒有代碼。在點擊MenuItem後,dataBinding不再有效。WPF:控件失去綁定

我可以告訴我'我的MyProperty的getter我的斷點沒有被擊中。

有什麼想法爲什麼?

下面是代碼:

<my:DataGrid.ContextMenu > 
     <ContextMenu Name="restoreCntextMenu" DataContext="{Binding PlacementTarget.SelectedItem, RelativeSource={RelativeSource Self}}"> 
      <MenuItem Header="Data Service" Click="dataServiceToolStripMenuItem_DropDownOpening"> 
       <MenuItem Header="Start" Click="startDataToolStripMenuItem_Click" IsEnabled="{Binding MyProperty}" /> 
      </MenuItem> 
     </ContextMenu> 
    </my:DataGrid.ContextMenu> 
+1

MyProperty是一個DependencyProperty嗎?如果是的話:WPF框架不使用實際的getter來解析綁定,它直接調用`GetValue`。所以你不能分辨這個值是否真的被要求。 (順便說一下,這就是爲什麼在DP中執行某些操作(s | g)而不是其他方法,只需調用(S | G)etValue) – Vlad 2010-11-26 12:55:08

回答

0

上下文菜單不像其他所有東西那樣是視覺樹的一部分,所以你的綁定不會像其他地方一樣工作。

相反,您需要綁定到展示位置目標。請參閱this question的接受答案。

0

我的猜測是,事情正在發生變化DataContext的。我會設置一個按鈕或其他東西,然後點擊你的菜單,然後按鈕,並在按鈕中檢查菜單的datacontext,以確保它是你認爲它應該是。