C#WPF ListView在删除时不会更新ObservableCollection中的项

C#WPF ListView在删除时不会更新ObservableCollection中的项,c#,wpf,listview,observablecollection,C#,Wpf,Listview,Observablecollection,试图从列表视图中删除可选项,其中项源已绑定到可观察集合调试显示项目被正确标记为选中,并从列表中删除。但是显示的列表视图不会随着更改而更新,因此删除的项目将保持显示的 查看 <ListView BorderThickness = "0" AlternationCount = "2" BorderBrush = "Transparent"

试图从
列表视图
中删除
可选
项,其中
项源
已绑定到
可观察集合
<代码>调试显示项目被正确标记为选中,并从列表中删除。但是显示的
列表视图
不会随着更改而更新,因此删除的项目将保持显示的

查看

<ListView BorderThickness       = "0"
                          AlternationCount      = "2"
                          BorderBrush           = "Transparent"
                          ItemsSource           = "{Binding TestEntries}"
                          Style                 = "{StaticResource ListViewStyle}"
                          ItemContainerStyle    = "{StaticResource ListViewItemStyle}"
                          ScrollViewer.HorizontalScrollBarVisibility="Hidden">
希望有人能给我指出正确的方向

试试这个:

getter
中返回与
ObservableCollection
相同的对象,以便它可以
通知
您的
目标
按照@George Alexandria的建议进行自我更新

public ObservableCollection<Communication> TestEntries
{
   get
   {
      return _testEntries;                  
   }
   set
   {
      _testEntries = value;
      //OnPropertyChanged(); <-- of no use
    }
 }

您总是从get返回new
observateCollection
,因此当您尝试删除项时,它会从new
observateCollection
中删除,当然,发送
CollectionChanged
,但您的
ListView
仅在初始化
observedcollection
时立即检索该实例,并且它不知道新集合的
CollectionChanged
。这很有意义,感谢您的解释。更换吸气剂后,它就像一个符咒。非常感谢:)。
private void ButtonDeleteCommandExecute()
{
    var toDeleteEntries = TestEntries.Where(x => x.IsSelected);
    toDeleteEntries.ToList().ForEach((obj) =>
    {
        TestEntries.Remove(obj as Entry);
    });
}
public ObservableCollection<Communication> TestEntries
{
   get
   {
      return _testEntries;                  
   }
   set
   {
      _testEntries = value;
      //OnPropertyChanged(); <-- of no use
    }
 }
TestEntries = new ObservableCollection<Communication>(_testEntries.Where(x=>x.Title.ToUpper().Contains(FilterText.ToUpper())).OrderByDescending(x=>x.Date).ToList());