2010-02-16 2 views
2

myListBox.Items.SortDescriptions.Add ( новый SortDescription ("BoolProperty", ListSortDirection.Descending));ICollectionView.SortDescriptions не работает для boolean

Эта сортировка работает только для строковых свойств базового проекта. Не с булевым? Есть ли причина для этого?

Спасибо!

UPDATE:

Да, ваш пример действительно работает. Но что на моем примере?

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(); 

ответ

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; } 
} 
+0

Да, ваш пример действительно работает, но посмотрите на мои, пожалуйста, я не вижу огромной разницы. –

+0

Prop - это не собственность, а поле. В этом разница! ;) WPF ищет свойства и не находит его! – Arcturus

+0

Да, я понял разницу между тем .. спасибо, поле должно быть приватным в любом случае .. возможно, это причина –