我有一個使用Caliburn.Micro的WPF應用程序。 DataGrid綁定到ViewModel中的對象集合。你可以請建議一種方法來過濾DataGrid的內容,如果可能的話,任何領域?WPF DataGrid過濾Caliburn.Micro
謝謝。
我有一個使用Caliburn.Micro的WPF應用程序。 DataGrid綁定到ViewModel中的對象集合。你可以請建議一種方法來過濾DataGrid的內容,如果可能的話,任何領域?WPF DataGrid過濾Caliburn.Micro
謝謝。
在視圖模型創建一個新的屬性:
private ICollectionView fooView;
public ICollectionView FooView
{
get
{
return this.fooView;
}
set
{
this.fooView = value;
NotifyPropertyChanged("FooView");
}
}
然後你填充綁定採集後:
// Populate collection
BindableCollection collectionName = this.PopulateCollection();
FooView = CollectionViewSource.GetDefaultView(collectionName);
您認爲更改綁定從collectionName
到FooView
。
CollectionView類提供了對數據進行排序/過濾/分組的方法。在你的情況下How to: Filter Data in a View。過濾器代碼將根據您的型號和要求而有所不同。
非常感謝。雖然我有這個問題。據我所知,這種方法讓我可以像「僅顯示未填寫的訂單」或「顯示所有訂單」等那樣進行過濾,但我需要讓用戶選擇例如客戶想要按客戶過濾時,顯示客戶選擇的所有記錄。我們不能像所提供的例子那樣使用邏輯(例如return(order.Filled ==「No」);),因爲Customer不是固定的值列表,如「Yes」或「No」。 – 2012-07-27 12:48:10
您可以創建多個過濾器事件處理程序(針對您要應用過濾器的任何字段)。因此,當用戶選擇Customer類型的值時,應用Customer類型的字段的處理程序(例如,'+ = new FilterEventHandler(ShowRecordsByCustomer);')。如果他選擇了Orders類型的值,請爲該類型的字段應用過濾器。 – ShadeOfGrey 2012-07-27 13:00:27
我明白了,謝謝! – 2012-07-27 13:02:23
你是綁定到集合(List,ObservableCollection)還是CollectionView? http://msdn.microsoft.com/en-us/library/system.windows.data.collectionview.aspx – ShadeOfGrey 2012-07-27 12:02:03
它是BindableCollection。 – 2012-07-27 12:04:08