MVVM: привязка к ListBox.SelectedItem?
Как связать свойство модели представления с свойством ListBox.SelectedItem?
Я создал простую демоверсию MVVM, чтобы попытаться понять это. Моя модель просмотра имеет следующие свойства:
private ObservableCollection<DisneyCharacter> p_DisneyCharacters;
public ObservableCollection<DisneyCharacter> DisneyCharacters
{
get { return p_DisneyCharacters; }
set
{
p_DisneyCharacters = value;
base.FirePropertyChangedEvent("DisneyCharacters");
}
}
private DisneyCharacter p_SelectedItem;
public DisneyCharacter SelectedItem
{
get { return p_SelectedItem; }
set
{
p_SelectedItem = value;
base.FirePropertyChangedEvent("SelectedItem");
}
}
Я хочу привязать свойство SelectedItem к элементу, выбранному в списке. Вот XAML для списка:
<ListBox ItemTemplate="{StaticResource MasterTemplate}"
ItemsSource="{Binding Path=DisneyCharacters}"
SelectedItem="{Binding Path=Selectedtem, Mode=TwoWay}"
HorizontalAlignment="Stretch" />
Вот моя проблема: свойство SelectedItem модели представления не обновляется, когда я изменяю выделение в списке.
Я проверил, где я временно заменил свойство SelectedItem модели представления свойством SelectedIndex и привязал его к свойству ListBox.SelectedIndex. Это свойство обновлено отлично - это просто свойство SelectedItem, с которым я не могу работать.
Итак, как мне установить привязку SelectedItem? Благодарим за помощь.
Ответы
Ответ 1
Ну, вот он, большой, как жизнь. В XAML. Я привязываюсь к свойству модели представления "Selectedtem". К сожалению, настоящее имя - "SelectedItem". Так что этот код действительно работает - я решил проблему в начале этого дня, а затем провел остаток дня и весь вечер, прочесывая паутину, прежде чем я заметил орфографическую ошибку.
Моя жена сказала мне в 3 часа ночи сегодня: "Знаешь, это окажется чем-то маленьким". И так оно и было - пропущенное письмо "Я". Ну, по крайней мере, я могу лечь спать сейчас.