-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