Так у меня есть ListBox:MVVM - ListBox SelectedItem Связывание недвижимости Going Null
<ListBox x:Name="listbox" HorizontalAlignment="Left" Margin="8,8,0,8" Width="272" BorderBrush="{x:Null}" Background="{x:Null}" Foreground="{x:Null}" ItemsSource="{Binding MenuItems}" ItemTemplate="{DynamicResource MenuItemsTemplate}" SelectionChanged="ListBox_SelectionChanged" SelectedItem="{Binding SelectedItem}">
</ListBox>
и у меня это включено в мой ViewModel:
public ObservableCollection<MenuItem> MenuItems
{
get
{
return menuitems;
}
set
{
menuitems = value;
NotifyPropertyChanged("MenuItems");
}
}
public MenuItem SelectedItem
{
get
{
return selecteditem;
}
set
{
selecteditem = value;
NotifyPropertyChanged("SelectedItem");
}
}
, а также в моем ViewModel:
public void UpdateStyle()
{
ActiveHighlight = SelectedItem.HighlightColor;
ActiveShadow = SelectedItem.ShadowColor;
}
Итак, цель состоит в том, чтобы вызвать UpdateStyle() всякий раз, когда выбрано выбранное событие. Поэтому в файле .CS я вызываю UpdateStyle(). Проблема заключается в том, что всякий раз, когда я вхожу в метод eventchanged, мой ViewModel.SelectedItem всегда имеет значение null. Я попытался отладить это, чтобы убедиться, что привязка работает правильно, и это так. Когда я нажимаю на элемент в списке, запускается Set SelectedItem, устанавливая значение ... но где-то между ними и выбранным измененным (в файле CS). Сбрасывается в Null.
Может ли кто-нибудь помочь?
Благодаря
Edit: Я думал, что я мог бы пролить немного больше света. 1. Нажмите на элемент в списке 2. SelectedItem.Set запускается, ViewModel.SeletedItem устанавливается правильно. 3. Введите событие OnSelectionChanged в файле .CS. 4. Введите ViewModel.UpdateStyle() 5. SelectedItem выбрасывает ненужное исключение.
Аналогичный вопрос был задан до того, как это поможет вам. http://stackoverflow.com/questions/414074/twoway-manual-binding-implementation-for-listbox-selecteditems – jsmith