У меня проблема с использованием SortDescription.Я нашел некоторую ветку о проблеме, например, если вы хотите отсортировать по типу, который не реализует IComparable, например по классу, определенному пользователем, но это не мой случай.
У меня есть класс, которыйимеет два свойства: идентификатор строки и значение типа int.Давайте назовем это Item!И у меня есть представление:
<UserControl> <!-- ... -->
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Click="Button_Click"
Content="Sort by ID"
Grid.Row="0"/>
<Button Click="Button_Click1"
Content="Sort by Value"
Grid.Row="1"/>
<DockPanel Grid.Row="2">
<ItemsControl x:Name="mItemsControl"
ItemsSource="{Binding Items}"><!-- The type of Items is ObservableCollection<Item> -->
<!-- ... -->
</ItemsControl>
</DockPanel>
</Grid>
</GroupBox>
EventHandlers похожи на эти:
private void Button_Click(object sender, RoutedEventArgs e)
{
mItemsControl.Items.SortDescriptions.Add(new SortDescription("ID", ListSortDirection.Ascending); //Exception here
}
private void Button_Click1(object sender, RoutedEventArgs e)
{
mItemsControl.Items.SortDescriptions.Add(new SortDescription("Value", ListSortDirection.Ascending); //...and here as well
}
Я получаю InvalidOperationException, потому что он "Не удалось сравнить два элемента в массиве."ни один из элементов не реализует IComparable.И это то, что я не могу понять, так как я могу сравнивать целые числа и строки.
Спасибо за любую идею!