В настоящее время я работаю над рефакторингом старого кода, написанного поверх WPF с C#.Databinding Complex Object Models with WPF
Я в настоящее время имеют составную модель пользователя, которая выглядит следующим образом:
public class UserModel{
public User User {get; set;}
public List<Guid> Permissions {get; set;}
}
В этой модели список разрешений приведен список идентификаторов разрешений, предоставленных Пользователем, на который ссылается модель.
В моем xaml для моего экрана управления пользователями У меня есть список этих моделей, связанных с полем со списком, и когда выбор изменяет выбранный элемент привязан к сетке, содержащей текстовые поля для свойства User и элемента управления 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;}
}
Моя первая мысль была реализовать INotifyPropertyChanged на SelectedPermission, и когда я связываю своего пользователя, просто установите IsSelected в true для любых разрешений, предоставляемых выбранному пользователю. Но похоже, что должен быть лучший способ.
Я дам этот снимок, я просто думал, что может быть способ привязать IsSelected к списку пользовательских разрешений легче, чем итерация через DataContext. – Philter
вы можете использовать LinQ для этого. –
Да, но я думал, что может быть способ сделать это в Xaml, который я имел в виду. – Philter