ICollectionView最初のMVVMプロジェクトに実装したところ、動作しています。ただし、実装はより良く、より流動的になる可能性があると思います。私に関連するコードを投稿します。ICollectionView誰かがそれを合理化または改善する方法についてのヒントや提案を私に与えることができる場合は、私に知らせてください. これが私のコードです:
private ICollectionView _advFilter;
public ICollectionView AdventurerFilter
{
get { return _advFilter; }
set
{
if (_advFilter != value)
{
_advFilter = value;
RaisePropertyChanged(() => AdventurerFilter);
}
}
}
public MainViewModel()
{
AdvNoFilter();
}
public void LoadGameExecute()
{
//Serialization Logic
AdvNoFilter();
}
public void ShowAllExecute()
{
AdvNoFilter();
}
public void ShowEmployedExecute()
{
AdvFilter(AdvStatus.Employed);
}
public void ShowAvailableExecute()
{
AdvFilter(AdvStatus.Available);
}
void AdvFilter(AdvStatus status)
{
AdventurerFilter = CollectionViewSource.GetDefaultView(Adventurers);
AdventurerFilter.Filter = adv => ((Adventurer)adv).Status.Equals(status);
}
void AdvNoFilter()
{
AdventurerFilter = CollectionViewSource.GetDefaultView(Adventurers);
AdventurerFilter.Filter = null;
}
これはすべて私の中にありMainViewModelます。Show...Execute コマンドは my のボタンにバインドされMainView、データは にListBoxバインドされた に表示されAdventurerFilterます。前に悲しかったように、うまくいきますが、これ以上効率的にできないと真剣に考えています。アドバイスをいただければ幸いです。
編集:これについては以前に言及する必要がありましたAdventurersが、ObservableCollection.