我在UWP应用程序中有一个菜单。我想根据"角色"隐藏或显示菜单项
现在我正在填充一个ObservableCollection<string>
,其中每个字符串都是一个角色。
在MenuItem
的Visibility
属性上,我将ObservableCollection
与Converter
和ConverterParameters
绑定在一起。
Visibility="{Binding Roles, Converter={StaticResource RolesToVisibilityConverter}, ConverterParameter='MyRoleToMatch', Mode=OneWay}"
如果我填充"roles"数组在视图的构造函数中,这样Binding
和Converter
都能正常工作。
我的问题是我从后面的代码填充和清除ObservableCollection
,但Binding
不会对Collection
的变化做出反应。
您应该为数据绑定的Roles
属性引发PropertyChanged
事件,以便框架再次调用Convert
方法。
这意味着定义ObservableCollection<string>
属性的类必须实现INotifyPropertyChanged
接口。然后,您可以像这样引发Roles
属性的事件,例如当CollectionChanged
被引发时:
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Roles)));
修改集合本身不会引发数据绑定集合属性的任何事件。