maybe someone can help me? I have the following scenario:
A simple view:
<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>
The code behind:
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(); } }
After the program startup the datagrid contains (as expected):
1
2
3
4
5
After click on the button:
5
2
4
3
1
But I really can't understand why. Am I doing something wrong or is this a bug? And if this is a bug is there a workaround?