-1
想有selectable
项目从ListView
这ItemsSource
是binded
到ObservableCollection
删除。 Debugging
显示这些项目被正确标记为选中状态并移除了列表本身。但显示的ListView
不会更新到更改,因此删除的项目保持shown
。C#WPF的ListView犯规更新从的ObservableCollection项目时删除
查看
<ListView BorderThickness = "0"
AlternationCount = "2"
BorderBrush = "Transparent"
ItemsSource = "{Binding TestEntries}"
Style = "{StaticResource ListViewStyle}"
ItemContainerStyle = "{StaticResource ListViewItemStyle}"
ScrollViewer.HorizontalScrollBarVisibility="Hidden">
观察集合
public ObservableCollection<Entry> TestEntries
{
get => new ObservableCollection<Entry>(_testEntries
.Where(x => x.Title.ToUpper().Contains(FilterText.ToUpper()))
.OrderByDescending(x => x.Date));
set
{
_testEntries = value;
OnPropertyChanged();
}
}
命令(删除项目)
private void ButtonDeleteCommandExecute()
{
var toDeleteEntries = TestEntries.Where(x => x.IsSelected);
toDeleteEntries.ToList().ForEach((obj) =>
{
TestEntries.Remove(obj as Entry);
});
}
希望如此meone可以点我在正确的方向
你总是得到返回新的'ObservableCollection',所以当你试图删除的项目,它是由新删除'ObservableCollection'的是,当然,发送'CollectionChanged'但你的'ListView'只在初始化时立即返回'ObservableCollection'的实例,它不知道新集合的'CollectionChanged'。 –
这很有道理,谢谢你的解释。改变吸气剂后,它就像魅力一样。非常感谢 :)。 – Delhoz