我有一个可以更改的值,它不会引发更改事件,并且绑定到该值的菜单项不能正确反映打开菜单项时的状态。我想在菜单打开时更新此绑定。我该怎么做?
每次打开菜单时,我都可以使用一个菜单项来轮询它的绑定吗?在这种情况下,IsCommEnabled属性:
<MenuItem Header="{Binding EnableComm}"
Command="{Binding Root.ToggleCommunications}"
IsChecked="{Binding Authorization.IsCommEnabled, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
-
public bool IsCommEnabled {
get { return _communications.IsCommEnabled; }
}
答案 0 :(得分:0)
如果您想将NotifyPropertyChanged
推回到IsCommEnabled
Dependency Property
答案 1 :(得分:0)
您可以订阅SubmenuOpened
事件,并手动更新绑定:
void MenuItem_SubmenuOpened(object sender, RoutedEventArgs e)
{
((MenuItem)sender).GetBindingExpression(MenuItem.IsCheckedProperty).UpdateTarget();
}
请注意,以上内容适用于正在打开的父项,因此您可能需要稍微纠缠一下以确保它是正在更新的正确项目。您可以使用MenuItem上的Items集合深入挖掘。