창이 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'를 사용하지 않는 세터를 가지고 있습니다. '_selectedItem = value; '만들기 – ASh
selectedItem에 대해 양방향 바인딩 모드를 설정하려고 시도하십시오 –