C# OnPropertyChanged不更新UI

C# OnPropertyChanged不更新UI,c#,wpf,mvvm,data-binding,listbox,C#,Wpf,Mvvm,Data Binding,Listbox,该窗口包含一个ListBox和一个TextBlock,我的目的是在ListBox中的选择更改时更新TextBlock 我有这门课: class ViewModelMain : ViewModelBase { public ObservableCollection<MemEntity> items { get; set; } public object SelectedItem { get { retu

该窗口包含一个ListBox和一个TextBlock,我的目的是在ListBox中的选择更改时更新TextBlock

我有这门课:

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"}
        };
    }
}
观点:

<ListBox x:Name="items" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding items}" DisplayMemberPath="s"/>
<TextBlock Text="{Binding SelectedItem.s}"/>
我以为我现在把所有东西都放在盒子里了,但它不起作用。我做错了什么?

\u selectedItem=selectedItem;什么也不做。您有一个不使用值的setter。使_selectedItem=值

使用标准代码段创建具有concreate类型的支持私有字段的属性:

private MemEntity _selectedItem;
public MemEntity SelectedItem 
{ 
    get
    {
        return _selectedItem;
    }
    set
    {
        _selectedItem = value;
        OnPropertyChanged("SelectedItem");
    }
}

_selectedItem=selectedItem;什么也不做。您有一个不使用值的setter。使_selectedItem=值;尝试将selectedItemWow的绑定模式设置为双向!我离得多么近啊。这是一个令人尴尬的错误,但谢谢你把它整理出来。@Pelle这基本上是我在上一个问题的答案中向你展示的东西的翻版。@Nkosi,我实际上打开了上一个问题,但没有滚动到第二个答案。遗憾的是,这确实是一个重复的答案,而不是一个问题。我确实觉得很奇怪,OP基本上又问了同样的问题,而之前已经给出了公认的答案。不是你的错。我仍然支持你的答案,对此我很抱歉。基本上我认为我做错了什么,这是无关的,但我只是把那一行搞糟了。我不是故意惹麻烦的。再一次,对不起。
private MemEntity _selectedItem;
public MemEntity SelectedItem 
{ 
    get
    {
        return _selectedItem;
    }
    set
    {
        _selectedItem = value;
        OnPropertyChanged("SelectedItem");
    }
}