может быть, кто-то может мне помочь? У меня есть следующий сценарий:
Простой вид:
<Window x:Class="DataGridSortBug.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <DockPanel> <StackPanel DockPanel.Dock="Top"> <Button Click="Button_Click">Refresh</Button> </StackPanel> <DataGrid ItemsSource="{Binding View}" /> </DockPanel> </Window>
Код позади:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new ViewModel(); } public class TestItem { private int _sequence; public int Sequence { get { return _sequence; } } public TestItem(int sequence) { _sequence = sequence; } } public class ViewModel { ObservableCollection<TestItem> _collection; private ICollectionView _view; public ICollectionView View { get { return _view; } } public ViewModel() { _collection = new ObservableCollection<TestItem>(); _collection.Add(new TestItem(5)); _collection.Add(new TestItem(2)); _collection.Add(new TestItem(4)); _collection.Add(new TestItem(3)); _collection.Add(new TestItem(1)); _view = CollectionViewSource.GetDefaultView(_collection); _view.SortDescriptions.Add(new SortDescription("Sequence", ListSortDirection.Ascending)); } } private void Button_Click(object sender, RoutedEventArgs e) { DataContext = new ViewModel(); } }
После запуска программы датасет содержит (как и ожидалось):
1
2
3
4
5
После нажатия на кнопку:
5
2
4
3
1
Но я действительно не могу понять, почему. Я что-то не так делаю или это баг? И если это баг, то есть обходной путь?