如何使用HierarchicalDataTemplate为EntityCollection对象对WPF TreeView进行排序?

| 我的网页是一个实体框架实体。这些绑定到WPF TreeView。我想排序Sort属性上TreeView中显示的所有网页。 码 EDMX 其“下属”属性返回零个或多个网页的集合。 XAML
<TreeView Name=\"TreeViewWebpages\">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType=\"{x:Type local:Webpage}\"
                                  ItemsSource=\"{Binding Subordinates}\">
            <TextBlock Text=\"{Binding Path=Title}\" />
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>
C#
TreeViewWebpages.ItemsSource = from Webpage root in db.Webpages.Include(\"Subordinates\")
                               where root.Dominant == null
                               select root;
结果 网页在TreeView中是无序的。 问题 如何更改此顺序以排序Sort属性中TreeView中显示的所有网页? 更新资料 这个ValueConverter似乎可以正常工作(谢谢@KP Adrian和@IVerzin)。有没有更好的办法? XAML
ItemsSource=\"{Binding Path=Subordinates, Converter={local:SortConverter}}\"
C#
[ValueConversion(typeof(EntityCollection<Webpage>), typeof(EntityCollection<Webpage>))]
public class SortConverter : MarkupExtension, IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((EntityCollection<Webpage>)value).OrderBy(o => o.Sort);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return this;
    }
}
    
已邀请:
        假设您的Sort属性是用于确定运行时顺序的字符串或整数,则可以在表达式中添加orderby部分。
TreeViewWebpages.ItemsSource = from Webpage root in db.Webpages.Include(\"Subordinates\")
                           where root.Dominant == null
                           orderby root.Sort
                           select root;
    

要回复问题请先登录注册