该窗口包含一个ListBox和一个TextBlock,我的目的是在ListBox中的选择更改时更新TextBlock。OnPropertyChanged不更新UI
我有这个类:
class ViewModelMain : ViewModelBase
{
public ObservableCollection<MemEntity> items { get; set; }
public object SelectedItem
{
get
{
return _selectedItem;
}
set
{
_selectedItem = SelectedItem;
OnPropertyChanged("SelectedItem");
}
}
public object _selectedItem { get; set; }
public ViewModelMain()
{
items = new ObservableCollection<MemEntity> {
new MemEntity{s = "a", Correct = 2, Incorrect = 1},
new MemEntity{s = "b"},
new MemEntity{s = "c"}
};
}
}
这是ViewModelBase:
class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
的观点:
<ListBox x:Name="items" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding items}" DisplayMemberPath="s"/>
<TextBlock Text="{Binding SelectedItem.s}"/>
我想我现在已经在盒子的一切,但它不工作。我究竟做错了什么?
'_selectedItem =的SelectedItem;'什么都不做。你有一个不使用'value'的setter。设置'_selectedItem = value;' – ASh
尝试设置绑定模式为双向selectedItem –