如何在Silverlight 4中绑定ContextMenu的IsEnabled属性?

5
如何在Silverlight 4(XAML)中绑定IsEnabled属性?
我尝试使用IsEnabled="{Binding ABC}",但这并不起作用 - MenuItem始终处于启用状态。
感谢您提供线索!
编辑:
有趣的是,当设置Mode=TwoWay时,绑定似乎起作用了。但是,在移动鼠标到菜单项上后,上下文菜单的外观才会更新。这是否是异步工作?如何在右键单击后立即更新上下文菜单的布局?(我尝试了UpdateLayout(),但它没有起作用)

ABC是什么,它是视图模型中的属性还是您尝试绑定到其他内容。如果它在视图模型中,您在哪里更改ABC并通知视图? - Wes Grant
@Wes,是的,你写得完全正确。 - Jamie
2个回答

6

好的,这是Silverlight Toolkit中已知的一个bug - 即使正确绑定和通知IsEnabled属性,上下文菜单的外观也不会改变。我不得不实现一个解决方法(简单更新控件的视图)。无论如何,感谢回复 :)


我有同样的问题 - 你如何更新控件的视图? - Calanus
2
好的,contextMenu1.InvalidateArrange() 在上下文菜单的打开事件中起作用。 - Calanus

1
一个好的调试方法是在使用Visual Studio进行调试时查看输出窗口。绑定方面的问题会在那里显示。
您是否将您的DataContext设置为具有公共属性ABC的对象?

我注意到,当我设置模式 (TwoWay) 时,绑定似乎是有效的。但是,菜单项的外观没有改变(直到我将光标移动到上面)。你有任何想法吗? - Jamie
在视图模型中的属性是依赖属性还是实现了INotifyPropertyChanged接口?即,当IsEnabled发生变化时,你是如何通知视图的? - Colin Thomsen
我实现了INotifyPropertyChanged。 - Jamie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接