gpt4 book ai didi

c# - 如何在 Xaml 中使用 SortDescriptions 对 TreeView 项目进行排序?

转载 作者:太空狗 更新时间:2023-10-29 17:35:17 30 4
gpt4 key购买 nike

我有一个绑定(bind)到 TreeViewLayers 列表,其中每个实例都有一个 Effects 列表。我通过 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, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}

关于c# - 如何在 Xaml 中使用 SortDescriptions 对 TreeView 项目进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722835/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com