2

myListBox.Items.SortDescriptions.Add(new SortDescription("BoolProperty", ListSortDirection.Descending));

此排序仅适用于基础项目的字符串属性。不带布尔值?这有什么原因吗?

谢谢 !

更新:

是的,您的示例确实有效。但是我的例子有什么问题?

public class A
{
    public bool Prop;            
}

List<A> l = new List<A>() {
    new A() { Prop = true  }, 
    new A() { Prop = false }, 
    new A() { Prop = true  },
};

ICollectionView icw = CollectionViewSource.GetDefaultView(l);                                                
icw.SortDescriptions.Add(new SortDescription("Prop", ListSortDirection.Ascending));                
icw.Refresh();
4

1 回答 1

3

嗯,我似乎可以在我的列表示例中的布尔属性上添加一个 SortDescription!

<Window x:Class="WpfApplication3.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <ListBox x:Name="box" DisplayMemberPath="Test" />
    </Grid>
</Window>

后面的代码:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();

        //4 instances, each with a property Test of another boolean value
        box.ItemsSource = new[] {
            new {Test = true}, 
            new {Test = false}, 
            new {Test = false}, 
            new {Test = true}
        };

        box.Items.SortDescriptions.Add(new SortDescription("Test", ListSortDirection.Descending));
    }
}


public class BooleanHolder
{
    public bool Test { get; set; }
}

奇迹般有效 ;)

也许您拼错了 SortDescription 对象中的属性名称?希望这可以帮助

在您的示例中,您将 Prop 定义为一个字段。使它成为一个属性,它将起作用;)

public class A
{
    public bool Prop { get; set; }
}
于 2010-02-16T13:02:53.690 回答