所以我有一个列表框:MVVM - ListBox中的SelectedItem绑定属性去空
<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()。 问题是,每当我进入selectchanged事件方法,我的ViewModel.SelectedItem始终为空。 我试着调试,看看绑定是否正常工作,它是。当我点击列表框中的一个项目时,SelectedItem集合被触发,设置值...但是在选定的区域和选定的区域之间改变(在CS文件中)它被重置为Null。
任何人都可以帮忙吗?
感谢
编辑: 我想我可能流下了一点光。 1.单击列表中的项目 2. SelectedItem.Set被触发,ViewModel.SeletedItem被正确设置。 3.在.CS文件中输入OnSelectionChanged事件。 4.输入ViewModel.UpdateStyle() 5. SelectedItem引发一个空异常。
以前有人问过类似的问题可以帮助你。 http://stackoverflow.com/questions/414074/twoway-manual-binding-implementation-for-listbox-selecteditems – jsmith 2010-05-27 02:39:44