Я хотел бы получить выбранный элемент ComboBox с использованием шаблона MVVM (новичок). Я читал, что это может быть достигнуто путем привязки свойства SelectedItem к свойству в ViewModel.Получение SelectedItem из ComboBox (MVVM)
XAML:
<ComboBox ItemsSource="{Binding RoomLockerLinkCollection}"
DisplayMemberPath="Room.Name"
SelectedItem="{Binding SelectedRoom}"/>
ViewModel:
public Room SelectedRoom { get; set; }
Но это не работает - единственное, что вот происходит это появляется красная кайма вокруг этого ComboBox - в дополнение после выбора нового элемента в ComboBox свойство «SelectedRoom» в моей VM по-прежнему равно null.
Edit 1:
Один короткий дополнительный вопрос:
связывания отлично работает - по крайней мере, для верхней "категории". My Wrapper-Class также содержит список шкафчиков.
<ComboBox DataContext="{Binding SelectedItem, ElementName=_cmbRoomSelection}" ItemsSource=" {Binding LockerCollection}" DisplayMemberPath="Name" SelectedValue="{Binding SAVM.SelectedLocker, Mode=TwoWay}" />
Когда я проверяю тип SelectedValue, это «Locker» - отлично. Но свойство SelectedLocker в моей VM остается нулевым ...
Дополнительно, может s.o. объясните, когда использовать «SelectedItem» и «SelectedValue»? Какая разница? Установка DataContext в коде XAML выше, не может быть сделано путем связывания SelectedValue ...
Edit 2 (Solution):
Хорошо, есть!
Как я понял, я сбросил свой DataContext - теперь Property SAVM, конечно, не удалось найти.
Решение:
<ComboBox DataContext="{Binding SelectedItem, ElementName=_cmbRoomSelection}"
ItemsSource="{Binding LockerCollection}"
DisplayMemberPath="Name"
SelectedValue="{Binding SAVM.SelectedLocker **ElementName=_vStorage**, Mode=TwoWay}" />
Красная коробка указывает на ошибку проверки, ваше имущество и ваши ItemsSource может не быть того же типа. –
omg, вы так правы - после установки типа свойства для объекта, чтобы проверить, какой тип я использую, я понял, что я использую оболочку для этого ... Есть ли способ связать свойство выбранного элемента с собственность в моем mv? например в моем combobox хранятся объекты типа roomLockerLink, который содержит комнату и список блокировщиков, но я хотел бы извлечь содержащуюся комнату, чтобы сохранить ее в моем mv-свойстве. Надежда так получает то, что я хочу сказать ... – C4p741nZ
Да, в один секунду я напишу ответ. В среднем, прочитав о SelectValue и SelectedValuePath –