也许有人可以帮助我?我有以下情况:
一个简单的看法:
<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
但我真的不明白为什么。我做错了什么还是这是一个错误?如果这是一个错误,是否有解决方法?