我目前正在重构一些使用 C# 在 WPF 之上编写的旧代码。
我目前有一个复合用户模型,如下所示:
public class UserModel{
public User User {get; set;}
public List<Guid> Permissions {get; set;}
}
在此模型中,权限列表是授予模型引用的用户的权限 ID 的列表。
In my xaml for my user management screen I have a list of these models bound to a combo box and when the selection changes the selected item is bound to a Grid containing text boxes for the User property and an Items Control.
当页面加载时,此项目控件由绑定到系统中所有权限的复选框填充。我的问题是将权限列表绑定到项目控件中的复选框的最佳方法是什么?
items 控件的代码如下所示:
<ScrollViewer Grid.Row="7" Grid.Column="1">
<ItemsControl ItemsSource={Binding}>
<ItemsControl.ItemsTemplate>
<DataTemplate>
<Checkbox Content="{Binding Description}" IsChecked="{Binding IsSelected}"/>
</DataTemplate>
</ItemsControl.ItemsTemplate>
</ScrollViewer>
并且权限的集合是这个对象的一个列表:
class SelectedPermission{
public Guid PermissionId {get; set;}
public string Description {get; set;}
public bool IsSelected {get; set;}
}
我最初的想法是在 SelectedPermission 集合上实现 INotifyPropertyChanged,当我绑定我的用户时,只需将 IsSelected 设置为 true 以获得授予所选用户的任何权限。但似乎应该有更好的方法。