为实现绑定数据的表格控件实现可筛选显示,利用派生自ItemsControl控件,绑定集合会建立ICollectView视图的特性,通过构造过滤器类,实现表格根据左侧TreeView选项变化,进行过滤显示。
一、DataGrid绑定数据
为显示成绩列表,在继承自 INotifyPropertyChanged的 ViewModel类中设置了属性Stulist,表示包含有学生各科成绩的数据 集合
private ObservableCollection<StudentSCore> _Stulist = new ObservableCollection<StudentSCore>();
public ObservableCollection<StudentSCore> Stulist
{
get { return this._Stulist; }
set
{
this._Stulist = value;
RaisePropertyChanged(() => Stulist);
}
}
Xaml窗口中,将Stulist绑定到DataGrid的ItemsSource属性上。
<DataGrid x:Name="reoGrid" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"
VirtualizingPanel.VirtualizationMode="Recycling"
VirtualizingPanel.IsVirtualizing="True"
ItemsSource="{Binding Stulist}" CanUserAddRows="False"
CellStyle="{DynamicResource DataGridCellStyle1}"
ColumnHeaderStyle="{DynamicResource DataGridColumnHeaderStyle1}" />
二、建立过滤器
主要是建立过滤属性和实现过滤的方法
public class StuFilter
{
public string FilterCharacter { get; set; }
public StuFilter(string filterWord)
{
FilterCharacter = filterWord;
}
public bool FilterItemByClass(object item)
{
StudentSCore stuItem = item as StudentSCore;
if (stuItem != null)
if (stuItem.班级== FilterCharacter)
return true;
return false;
}
public bool FilterItemByName(object item)
{
StudentSCore stuItem = item as StudentSCore;
if (stuItem != null)
if (stuItem.姓名 == FilterCharacter)
return true;
return false;
}
三、视图实现