2010-11-26 86 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,以确保它是你认为它应该是。