每次选择另一个ListCollection的Item时,我想在列表框中更新ListCollectionView。
我有2个ListViewCollection,SceneCollectionView和ShotCollectionView。我希望基于ShotCollectionView中的属性SceneNumber过滤SceneCollection,但是当我从SceneCollectionView中的一个项目转到另一个项目时,我可以让ShotCollectionView更新。
这是我的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更好。但我不知道如何实现
答案 0 :(得分:0)
我不明白你想做什么,但让我们谈一个例子:
让我们说
ListBox1
绑定到 ListBox1Items 和
ListBox2
绑定到 ListBox2Items 。
如果您要从ListBox2
过滤数据,则必须过滤 ListBox2Items 。怎么做 ?很简单:ListBox1
有一个属性 SelectedItem ,你可以绑定它---让我们说--- ListBox1SelectedItem 。每次选择更改时,在 ListBox1SelectedItem 的设置器中,您都可以在 ListBox2Items 上触发过滤器。
希望你理解我所解释的内容。