私は現在、C# を使用して WPF の上に記述された古いコードのリファクタリングに取り組んでいます。
現在、次のような複合ユーザー モデルがあります。
public class UserModel{
public User User {get; set;}
public List<Guid> Permissions {get; set;}
}
このモデルでは、アクセス許可リストは、モデルによって参照されるユーザーに付与されたアクセス許可 ID のリストです。
私のユーザー管理画面の xaml には、これらのモデルのリストがコンボ ボックスにバインドされており、選択が変更されると、選択されたアイテムは、ユーザー プロパティとアイテム コントロールのテキスト ボックスを含むグリッドにバインドされます。
このアイテム コントロールには、ページの読み込み時にシステム内のすべてのアクセス許可にバインドされたチェック ボックスが表示されます。私の質問は、アクセス許可リストを項目コントロールのチェック ボックスにバインドする最良の方法は何ですか?
アイテム コントロールのコードは次のようになります。
<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 に設定するだけです。しかし、もっと良い方法があるはずです。