ICollectionView.SortDescriptions不适用于布尔值

时间:2010-02-16 12:25:48

标签: c# wpf sorting boolean collectionviewsource

myListBox.Items.SortDescriptions.Add(             新的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();

1 个答案:

答案 0 :(得分: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; }
}