我的网页是一个实体框架实体。它们绑定到WPF TreeView。我想订购排序属性上的TreeView中显示的所有网页。
代码
EDMX

其下属属性返回0或多个网页的集合。
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中是无序的。
问题
如何将其更改为排序属性上的TreeView中显示的所有网页?
更新
这个ValueConverter似乎起作用了(谢谢你,KP禤浩焯和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;
}
}发布于 2011-05-27 18:50:16
假设排序属性是在运行时用于确定顺序的字符串或整数,则可以向表达式中添加orderby部分。
TreeViewWebpages.ItemsSource = from Webpage root in db.Webpages.Include("Subordinates")
where root.Dominant == null
orderby root.Sort
select root;https://stackoverflow.com/questions/6156357
复制相似问题