[英]How to perform text search on datagrid?
我可以知道如何在此默認DataGrid
上執行搜索嗎? 同時增加價值就可以了。
<DataGrid Name="table" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" IsTextSearchEnabled="True" Background="White">
<DataGrid.Columns>
<DataGridTextColumn Header="Timestamp" Binding="{Binding StartDate}" SortDirection="Descending" SortMemberPath="StartDate" IsReadOnly="True" />
<DataGridTextColumn Header="Title" Binding="{Binding Title}" IsReadOnly="True" />
<DataGridTextColumn Header="Description" Binding="{Binding Description}" IsReadOnly="True" />
<DataGridTextColumn Header="Type" Binding="{Binding Tag}" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
如何創建和使用CollectionView
下面的示例向您展示如何創建集合視圖並將其綁定到ListBox ,與將其與datagrid一起使用的方式相同
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ListBox ItemsSource={Binding Customers} />
</Window>
public class CustomerView
{
public CustomerView()
{
DataContext = new CustomerViewModel();
}
}
public class CustomerViewModel
{
private ICollectionView _customerView;
public ICollectionView Customers
{
get { return _customerView; }
}
public CustomerViewModel()
{
IList<Customer> customers = GetCustomers();
_customerView = CollectionViewSource.GetDefaultView(customers);
}
}
過濾
要過濾集合視圖,您可以定義一個回調方法,該方法確定項目是否應為視圖的一部分。 該方法應具有以下簽名:bool Filter(對象項)。 現在,將該方法的委托設置為CollectionView的Filter屬性,即可完成操作。
ICollectionView _customerView = CollectionViewSource.GetDefaultView(customers);
_customerView.Filter = CustomerFilter
private bool CustomerFilter(object item)
{
Customer customer = item as Customer;
return customer.Name.Contains( _filterString );
}
刷新過濾器
如果更改過濾條件並希望刷新視圖,則必須在集合視圖上調用Refresh()
public string FilterString
{
get { return _filterString; }
set
{
_filterString = value;
NotifyPropertyChanged("FilterString");
_customerView.Refresh();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.