Powiązanie modeli złożonych obiektów z WPF
Obecnie pracuję nad refaktoryzacją starego kodu napisanego na WPF z C #.
Obecnie mam złożony model użytkownika, który wygląda tak:
public class UserModel{
public User User {get; set;}
public List<Guid> Permissions {get; set;}
}
W tym modelu lista Uprawnienia to lista identyfikatorów uprawnień przyznanych użytkownikowi, do którego odwołuje się model.
W moim xamlu dla mojego ekranu zarządzania użytkownikami mam listę tych modeli powiązanych z polem kombi, a gdy wybór się zmienia, zaznaczony element jest powiązany z tabelą zawierającą pola tekstowe dla właściwości użytkownika i kontroli elementów.
Ta kontrola elementów jest wypełniona polami wyboru powiązanymi ze wszystkimi uprawnieniami w systemach podczas ładowania strony. Moje pytanie brzmi: jaki jest najlepszy sposób powiązania listy uprawnień z polami wyboru w kontrolce elementów?
Kod kontrolki elementów wygląda mniej więcej tak:
<ScrollViewer Grid.Row="7" Grid.Column="1">
<ItemsControl ItemsSource={Binding}>
<ItemsControl.ItemsTemplate>
<DataTemplate>
<Checkbox Content="{Binding Description}" IsChecked="{Binding IsSelected}"/>
</DataTemplate>
</ItemsControl.ItemsTemplate>
</ScrollViewer>
A zbiór uprawnień to Lista tego obiektu:
class SelectedPermission{
public Guid PermissionId {get; set;}
public string Description {get; set;}
public bool IsSelected {get; set;}
}
Moją początkową myślą było zaimplementowanie INotifyPropertyChanged w kolekcji SelectedPermission i po powiązaniu mojego użytkownika wystarczy ustawić IsSelected na true dla wszelkich uprawnień, które są przyznane wybranemu użytkownikowi. Ale wydaje się, że powinien być lepszy sposób.