Множественный список выбора, как хранить несколько вариантов MVVM - PullRequest
0 голосов
/ 23 января 2020

У меня было подобное поле со списком

<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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...