XAML
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApplication1" mc:Ignorable="d" Title="MainWindow" Height="250" Width="250"> <Grid Margin="10"> <DataGrid ItemsSource="{Binding TestList}"> </DataGrid> </Grid> </Window>
ソース
public partial class MainWindow : Window { public class TestItem { public string Item1 { get; set; } public string Item2 { get; set; } public string Item3 { get; set; } } public ObservableCollection<TestItem> TestList { get; set; } public MainWindow() { InitializeComponent(); TestList = new ObservableCollection<TestItem>(); TestList.Add(new TestItem() { Item1 = "q", Item2 = "7", Item3 = "い" }); TestList.Add(new TestItem() { Item1 = "w", Item2 = "4", Item3 = "ろ" }); TestList.Add(new TestItem() { Item1 = "e", Item2 = "1", Item3 = "は" }); TestList.Add(new TestItem() { Item1 = "r", Item2 = "2", Item3 = "に" }); TestList.Add(new TestItem() { Item1 = "t", Item2 = "3", Item3 = "ほ" }); var cv = CollectionViewSource.GetDefaultView(TestList); cv.SortDescriptions.Clear(); cv.SortDescriptions.Add(new SortDescription("Item2", ListSortDirection.Descending)); DataContext = this; } }
ICollectionViewを取得 (25行目)
CollectionViewSourceのGetDefaultViewメソッドへデータソースを渡してCollectionViewを取得。
ICollectionViewへソート方法を設定 (26~27行目)
CollectionViewのSortDescriptionsプロパティを利用。
一度Clearしてからソートするフィールド名と昇順・逆順の指定をする。
このデータソースがバインドされるDataGridは、指定したソート設定が適用されて表示される。
コメントをお書きください