在UWP应用程序中,当数组绑定到一个可见性属性时,我如何侦听数组的变化?



我在UWP应用程序中有一个菜单。我想根据"角色"隐藏或显示菜单项

现在我正在填充一个ObservableCollection<string>,其中每个字符串都是一个角色。

MenuItemVisibility属性上,我将ObservableCollectionConverterConverterParameters绑定在一起。

Visibility="{Binding Roles, Converter={StaticResource RolesToVisibilityConverter}, ConverterParameter='MyRoleToMatch', Mode=OneWay}"

如果我填充"roles"数组在视图的构造函数中,这样BindingConverter都能正常工作。

我的问题是我从后面的代码填充和清除ObservableCollection,但Binding不会对Collection的变化做出反应。

谁有什么建议来解决这个问题?

您应该为数据绑定的Roles属性引发PropertyChanged事件,以便框架再次调用Convert方法。

这意味着定义ObservableCollection<string>属性的类必须实现INotifyPropertyChanged接口。然后,您可以像这样引发Roles属性的事件,例如当CollectionChanged被引发时:

PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Roles)));

修改集合本身不会引发数据绑定集合属性的任何事件。

最新更新