我正在动态填充上下文菜单,使用这样的类来表示每个项目:-
public class ContextMenuItem : INotifyPropertyChanged
{
public string Header {get;set;}
public bool IsChecked {get;set;}
public ICommand Command {get;set;}
..etc..
}
请注意,这些属性实现了标准的 INotifyPropertyChanged 内容,我在此处省略了这些内容以节省空间。
我不会包含 XAML - 上面的属性只是绑定到它们的MenuItem
对应项。
这是我的问题。我想要一个菜单项的IsChecked
状态来“跟踪”另一个模型的布尔属性的值。例如:-
var menuItem = new ContextMenuItem
{
Caption = "Online?",
IsChecked = user.IsOnline
};
这显然不能正常工作——尽管菜单项的选中状态最初会反映用户的在线状态,但选中状态不会随着更改而user.IsOnline
改变。
一种方法是订阅user
对象的 PropertyChanged 事件,并在更改IsChecked
时IsOnline
更改,但这感觉有点复杂。有没有更优雅的解决方案?