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