最近在看关于Mindscape的 WPF Elements这款界面控件产品,界面效果挺炫,本人比较喜欢它的仪表盘的效果···· html
在Mindscape WPF Elements中时如何实现排序、过滤和分组的呢,今天就来分享一下: node
网格属性能够按照如下方式来进行设置: 工具
经过设置一个合适的IComparer排序属性: spa
<ms:PropertyGrid Sorting='{x:Static ms:PropertySorting.ByHumanName}'/>
经过设置的BindingView属性默认视图的CustomSort属性。 code
经过应用SortDescription到BindingView属性的默认视图,以下: htm
属性网格排序(程序): 排序
SortDescription alphabetical = new SortDescription("Node.HumanName", ListSortDirection.Ascending); ICollectionView view = CollectionViewSource.GetDefaultView(PropertyGrid1.BindingView); view.SortDescriptions.Add(alphabetical); 若是网格的一个实例包含扩展节点,排序描述不传播到子节点(但自定义排序会),若是使用的是SortDescriptions来进行子节点排序, 在BindingView collection中定位父节点,并应用一个SortDescription到子属性的默认视图。
网格属性能够经过设置BindingView属性的默认视图的过滤属性来过滤,以下所示: ip
ICollectionView view = CollectionViewSource.GetDefaultView(PropertyGrid1.BindingView); view.Filter = delegate(object obj) { Node node = ((PropertyGridRow)obj).Node; return node.Children.Count == 0; };
属性能够按照下面的方法来进行分组: get
经过设置分组属性到一个合适的GroupDescription,分组属性包含了一个预约义的对于按状况分组的GroupDescription。 产品
分组属性(声明):
<ms:PropertyGrid Grouping='{x:Static ms:PropertyGrouping.ByCategory}'/>
经过应用一个GroupDescription到绑定窗口属性的默认视图,以下所示:
分组属性(程序):
PropertyGroupDescription byCategory = new PropertyGroupDescription("Node", new NodeToCategoryConverter());
ICollectionView view = CollectionViewSource.GetDefaultView(PropertyGrid1.BindingView);
view.GroupDescriptions.Add(byCategory);
属性网格控件选择性的用命令显示工具栏,好比对于按字母顺序排序,或按照类别分组(使用CategoryAttribute),或是搜索过滤设备