如何在数据网格上执行文本搜索
本文关键字:执行 文本 搜索 网格 数据网 数据 | 更新日期: 2023-09-27 18:33:34
我可以知道,我如何在这个默认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
下面的示例演示如何创建集合视图并将其绑定到列表框 与数据网格一起使用的方式相同
<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();
}
}