当数组绑定到 UWP 应用程序中的可见性 属性 时,如何监听数组的变化

How do I listen for changes in array when the array is bound to a visbility propery in an UWP application

我在 UWP 应用程序中有一个菜单。我想根据从 API.

收到的“角色”隐藏或显示菜单项

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

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

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

如果我在视图的构造函数中填充“角色”数组,那么 BindingConverter 都可以正常工作。

我的问题是我从后面的代码中填充并清除了 ObservableCollection,但是 BindingCollection 中的更改没有反应。

有人对如何解决这个问题有什么建议吗?

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

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

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

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