wpf datagrid 过滤数据两种方式?
1. 使用 visible 属性动态绑定
优点:实时性很高
缺点:耗资源
public class TaskVisibilityConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var searchWord = values[0] as string;
var item = values[1] as string;
if (item.ToLower().Contains(searchWord.ToLower()))
return Visibility.Visible;
return Visibility.Collapsed;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
<DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="Visibility"> <Setter.Value> <MultiBinding Converter="{StaticResource M3u8TaskVisibilityConverter}"> <Binding ElementName="txtSearchWord" Path="Text" /> <Binding Path="Title" /> </MultiBinding> </Setter.Value> </Setter> </Style> </DataGrid.RowStyle>
2. 使用 CollectionViewSource 动态过滤
优点:代码可控
var collectionView = CollectionViewSource.GetDefaultView(dataGrid.ItemsSource); collectionView.Filter = item => { var searchText = txtSearchWord.Text; var title = ((YourDataType)item).Title; return string.IsNullOrEmpty(searchText) || title.Contains(searchText); };
桂棹兮兰桨,击空明兮溯流光。
浙公网安备 33010602011771号