c# – 如何使用Xaml中的SortDescriptions对TreeView项目进行排序
发布时间:2020-12-15 04:28:55 所属栏目:百科 来源:网络整理
导读:我有一个绑定到TreeView的图层列表,其中每个实例都有一个“效果”列表.我通过一个HierarchicalDataTemplate显示它,它的工作原理很好,但我正在使用SortDescriptions进行排序. 我不知道如何在xaml中这样做,但是这样做只排除了第一级项目,而不是子项: ICollect
我有一个绑定到TreeView的图层列表,其中每个实例都有一个“效果”列表.我通过一个HierarchicalDataTemplate显示它,它的工作原理很好,但我正在使用SortDescriptions进行排序.
我不知道如何在xaml中这样做,但是这样做只排除了第一级项目,而不是子项: ICollectionView view = CollectionViewSource.GetDefaultView ( treeView1.ItemsSource ); view.SortDescriptions.Add ( new SortDescription ( "Name",ListSortDirection.Ascending ) ); 我试图用.Color,然后由.Name排序它们. 有任何想法吗? 编辑:我添加了这段代码: <Window.Resources> <CollectionViewSource x:Key="SortedLayers" Source="{Binding AllLayers}"> <CollectionViewSource.SortDescriptions> <scm:SortDescription PropertyName="Color" /> <scm:SortDescription PropertyName="Name" /> </CollectionViewSource.SortDescriptions> </CollectionViewSource> </Window.Resources> 但是,这仍然是第一级的层次结构.如何为每一层指定它?效果集合? 解决方法
我建议使用转换器来排序子项.
这样的东西 <TreeView Name="treeCategories" Margin="5" ItemsSource="{Binding Source={StaticResource SortedLayers}}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Effects,Converter={StaticResource myConverter},ConverterParameter=EffectName}"> <TextBlock Text="{Binding Path=LayerName}" /> <HierarchicalDataTemplate.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Path=EffectName}" /> </DataTemplate> </HierarchicalDataTemplate.ItemTemplate> </HierarchicalDataTemplate> </TreeView.ItemTemplate> 和转换器: public class MyConverter : IValueConverter { public object Convert(object value,Type targetType,object parameter,CultureInfo culture) { System.Collections.IList collection = value as System.Collections.IList; ListCollectionView view = new ListCollectionView(collection); SortDescription sort = new SortDescription(parameter.ToString(),ListSortDirection.Ascending); view.SortDescriptions.Add(sort); return view; } public object ConvertBack(object value,CultureInfo culture) { return null; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |