【发布时间】:2011-02-24 11:25:13
【问题描述】:
所以我有一个列表框:
<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");
}
}
也在我的视图模型中:
public void UpdateStyle()
{
ActiveHighlight = SelectedItem.HighlightColor;
ActiveShadow = SelectedItem.ShadowColor;
}
因此,目标是在触发 selectedchanged 事件时调用 UpdateStyle()。所以在.CS 文件中,我调用UpdateStyle()。 问题是,每当我进入 selectionchanged 事件方法时,我的 ViewModel.SelectedItem 始终为空。 我尝试调试它以查看绑定是否正常工作,并且确实如此。当我点击列表框中的一个项目时,SelectedItem Set 被触发,设置值......但介于两者之间的某个地方和选定的更改(在 CS 文件中)它被重置为 Null。
有人可以帮忙吗?
谢谢
编辑: 我想我可能会更清楚一点。 1. 单击列表中的一个项目 2. SelectedItem.Set 被触发,ViewModel.SeletedItem 被正确设置。 3. 在 .CS 文件中输入 OnSelectionChanged 事件。 4.进入ViewModel.UpdateStyle() 5. SelectedItem 抛出 Null 异常。
【问题讨论】:
-
之前有人问过一个类似的问题,应该可以帮助你。 stackoverflow.com/questions/414074/…