WPF如何在菜单打开时强制菜单项绑定更新

时间:2014-06-27 19:48:53

标签: wpf binding

我有一个可以更改的值,它不会引发更改事件,并且绑定到该值的菜单项不能正确反映打开菜单项时的状态。我想在菜单打开时更新此绑定。我该怎么做?

每次打开菜单时,我都可以使用一个菜单项来轮询它的绑定吗?在这种情况下,IsCommEnabled属性:

<MenuItem Header="{Binding EnableComm}"  
    Command="{Binding Root.ToggleCommunications}"
    IsChecked="{Binding Authorization.IsCommEnabled, Mode=OneWay,         UpdateSourceTrigger=PropertyChanged}"/>

-

    public bool IsCommEnabled {
        get { return _communications.IsCommEnabled; }
    }

2 个答案:

答案 0 :(得分:0)

如果您想将NotifyPropertyChanged推回到IsCommEnabled

,则必须提高Dependency Property

答案 1 :(得分:0)

您可以订阅SubmenuOpened事件,并手动更新绑定:

void MenuItem_SubmenuOpened(object sender, RoutedEventArgs e)
{
    ((MenuItem)sender).GetBindingExpression(MenuItem.IsCheckedProperty).UpdateTarget();
}

请注意,以上内容适用于正在打开的父项,因此您可能需要稍微纠缠一下以确保它是正在更新的正确项目。您可以使用MenuItem上的Items集合深入挖掘。