У меня было подобное поле со списком
<ComboBox Margin="5,0" Width="120" Height="25" ItemsSource="{Binding ListOfSemesters}"
SelectedItem="{Binding SelectedSemester, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" DisplayMemberPath="DisplayMember"
Но тогда оно позволяет мне выбрать только 1 компонент из ListOfSemesters. Мне нужно изменить, чтобы позволить пользователю выбрать несколько семестров для отображения, поэтому я создал что-то вроде этого
<ComboBox HorizontalAlignment="Stretch" Width="120" Height="30" Margin="10,5,10,0" ItemsSource="{Binding ListOfSemesters}" SelectedItem="{Binding SelectedSemester, Mode=TwoWay}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding DisplayMember}" IsChecked="{Binding IsChecked}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
В своем классе DetailViewModel я определяю ListOfSemester как LookUp, у него есть 2 свойства - DisplayMember и Id
В конструкторе:
ListOfSemesters = new ObservableCollection<LookUpItem>();
В классе:
public ObservableCollection<LookUpItem> ListOfSemesters { get; }
Раньше у меня было свойство типа SelectedSemester, но оно содержит только один Id, теперь, когда пользователь выбирает несколько семестров Я должен хранить их, как это сделать? До SelectedSemester
public LookUpItem SelectedSemester
{
get { return selectedSemester; }
set
{
selectedSemester = value;
OnPropetyChanged();
}
}
я загружаю семестр в методе LoadAsyn c, когда открываю этот DetailView
private async Task LoadSemestersLookUpAsync()
{
ListOfSemesters.Clear();
var lookup = await _semesterLookUpDataService.GetSemesterLookUpAsync(); //grabs from entity subjects
foreach (var lookupItem in lookup)
{
ListOfSemesters.Add(lookupItem);
}
}
Что мне нужно реализовать и как сохранить несколько вариантов выбора пользователя? И что добавить в поле со списком xaml