所以我有一個列表框: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