Итак, у меня есть список:
<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>
и я включил это в мою модель просмотра:
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 ().
Проблема заключается в том, что всякий раз, когда я вхожу в метод события selectionbreak, мой ViewModel.SelectedItem всегда равен нулю.
Я попытался отладить это, чтобы увидеть, работает ли привязка правильно, и это так. Когда я нажимаю на элемент в списке, запускается SelectedItem Set, устанавливая значение ... но где-то между этим и выбранным измененным (в CS-файле) он сбрасывается в Null.
Может кто-нибудь помочь?
Спасибо
Edit:
Я думал, что мог бы пролить немного больше света.
1. Нажмите на элемент в списке
2. SelectedItem.Set срабатывает, ViewModel.SeletedItem устанавливается правильно.
3. Введите Событие OnSelectionChanged в файл .CS.
4. Введите ViewModel.UpdateStyle ()
5. SelectedItem выбрасывает нулевое исключение.