基于其他ListcollectionView的当前项更新ListcollectionView
本文关键字:ListcollectionView 更新 于其他 其他 | 更新日期: 2023-09-27 17:59:56
每次选择另一个ListCollection的Item时,我都要更新列表框中的ListCollectionView。
我有两个ListViewCollection、SceneCollectionView和ShotCollectionView。我希望根据ShotCollectionView中的属性SceneNumber筛选SceneCollection,但当我在SceneCollection视图中从一个项目转到另一个项目时,我可以更新ShotCollection视图。
这是我的ViewModel
public class ShotListViewModel : NotifyUIBase
{
public ListCollectionView SceneCollectionView { get; set; }
private Scenes CurrentScene
{
get { return SceneCollectionView.CurrentItem as Scenes; }
set { SceneCollectionView.MoveCurrentTo(value); RaisePropertyChanged(); }
}
private ObservableCollection<Shot> _allShots = new ObservableCollection<Shot>();
public ObservableCollection<Shot> AllShots
{
get { return _allShots; }
set { _allShots = value; RaisePropertyChanged();}
}
private ListCollectionView _allShotsCollection;
public ListCollectionView AllShotsCollection
{
get
{
if (_allShotsCollection == null)
{
_allShotsCollection = new ListCollectionView(this.AllShots);
_allShotsCollection.Filter = IsSceneNumber;
}
return _allShotsCollection;
}
}
private bool IsSceneNumber(object obj)
{
if (obj as Shot != null
&& (obj as Shot).SceneNumber == (SceneCollectionView.CurrentItem as Scene).SceneNumber)
{
return true;
}
return false;
}
public ShotListViewModel()
{
SceneCollectionView = Application.Current.Resources["SceneCollectionView"] as ListCollectionView;
GetShotList(); //Populates the AllShots Observable collection.
AddShotCommand = new RelayCommand(AddShot);
FilterShotsCommand = new RelayCommand(AddShot);
}
我在这里缺少了什么来使它工作,还是使用ICollectionViewLiveShaping更好。但我不知道如何实现
我不明白你想做什么,但让我们谈谈一个例子:
假设我们有
ListBox1
绑定到ListBox1Items和ListBox2
绑定到ListBox2Items。
如果要筛选ListBox2
中的数据,则必须筛选ListBox2Items。如何做到这一点?很简单:ListBox1
有一个属性SelectedItem,您可以将其绑定到---ListBox1SelectedItem。每次选择发生更改时,在ListBox1SelectedItem的setter中,您都可以触发ListBox2Items上的筛选器。
希望你能理解我的解释。