我想过滤WPF DataGrid和我做,在这种方式,我用datagridcolumnsheader,把一个文本框的标题,并用它们过滤每一列:如何更新wpf数据网格上的过滤器?
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
textSearch = (sender as TextBox).Text;
CollectionViewSource.Filter += new FilterEventHandler(FilterEvent);
}
和
private void FilterEvent(object sender, FilterEventArgs e)
{
if (propertyName == null)
return;
var a = e.Item.GetType().GetProperty("Name");
if (a != null)
{
if (textSearch != "")
{
var s = a.GetValue(e.Item, null);
if (s != null)
e.Accepted = s.ToString().Contains(textSearch);
else
e.Accepted = false;
}
else
e.Accepted = true;
}
}
它的工作原理对于像id这样的列很好,但是当我想对另一个列如name进行过滤时,它仅按名称过滤列表,并且不保留过去的过滤器,例如,如果我通过id = 2过滤列表,然后按名称过滤='a',它只是按名称过滤列表='a'!