











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); };
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。