我有一個DataGrid,我綁定到我的視圖模型中的ObservableCollection,我需要能夠對DataGrid進行排序時對集合進行排序,以便我可以在其他地方使用此排序順序。我目前在ObvservableCollection上使用包裝來支持排序。 DataGrid排序時,它只對顯示的數據進行排序,而不排序集合中的基礎數據。數據由一個整數列和一個字符串列組成,需要支持升序和降序排序。我還希望保持與標準DataGrid排序相同的用法,即單擊列標題並在升序和降序之間切換。我對WPF比較陌生,所以我不知道數據和命令綁定的所有細節,但我認爲會有辦法完成我想要做的事情。這裏是一個示例xaml來說明我的視圖設置。排序ObservableCollection綁定到MVVM中的DataGrid
<DataGrid ItemsSource="{Binding mySource}"
Name="myDataGrid"
CanUserResizeRows="False"
AutoGenerateColumns="False"
HeadersVisibility="Column" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Header 1" CanUserSort="True" SortMemberPath="firstValue">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding firstValue}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Header 2" Width="*" CanUserSort="True" SortMemberPath="secondValue">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding secondValue}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
源數據的類型是這樣的:現在
public class myType
{
public int firstValue { get; set; }
public string secondValue { get; set; }
// some functions and variables...
}
,就像我上面說的,我需要訪問他們的有序集合中的項目,但它並不需要具體是一個ObservableCollection。只要我能訪問集合中的項目,無論當前的順序是什麼,當我訪問它們時,一切都很好。我想也許是一個ListCollectionView什麼的。我也不希望集合在新項目添加到集合時重新排序。任何新項目都應該像正常情況一樣添加到集合的末尾。
任何想法?
我不得不修改這一點在我的MVVM的設置工作,但我得到它的工作。感謝ICollectionView的提示。 – climbak