C# wpf中 DataGrid 绑定的数据,如何进行多列并行筛选
时间: 2024-11-10 07:26:20 浏览: 66
在C# WPF中,DataGrid控件通常用于显示数据列表,并通过Binding绑定到数据源。对于多列并行筛选,你可以利用MVVM(Model-View-ViewModel)架构来实现,这样可以将数据处理逻辑从视图分离出去。
以下是步骤:
1. **创建视图模型** (ViewModel): 创建一个类,如`MyDataViewModel`,其中包含数据源和筛选逻辑。例如:
```csharp
public class MyDataViewModel : INotifyPropertyChanged
{
private List<MyData> data;
public ObservableCollection<MyData> DataSource { get; set; }
// 筛选属性
private string filterColumn1;
public string FilterColumn1 { get => filterColumn1; set { filterColumn1 = value; OnPropertyChanged(); FilterData(); } }
private string filterColumn2;
public string FilterColumn2 { get => filterColumn2; set { filterColumn2 = value; OnPropertyChanged(); FilterData(); } }
private void FilterData()
{
DataSource = data.Where(d => d.Column1.Contains(filterColumn1) && d.Column2.Contains(filterColumn2)).ToList().AsObservableCollection();
}
// ...其他INotifyPropertyChanged成员
}
```
2. **设置DataGrid的DataContext**: 在XAML中,确保DataGrid的 DataContext 设置为你创建的 ViewModel 类实例,比如:
```xaml
<DataGrid ItemsSource="{Binding DataSource}" AutoGenerateColumns="False">
<!-- 添加自定义列头 -->
</DataGrid>
```
3. **用户输入触发筛选**: 用户可以在文本框或其他UI元素上添加事件处理器,每当输入改变时,更新 ViewModel 中对应的筛选字段值,然后调用 `FilterData()` 方法。
阅读全文