WPF Datagridがユーザーによって並べ替えられていることがわかりました。 Sorted
イベントはなぜですか?私はSortingイベントしか見つけることができません。Datagrid:Sortedイベントはありませんか?
私はまた、ビューにオブジェクトを公開している、CollectionView
とListCollectionView
を調査しました。
これは箱から出てくるので、私はかなり驚いています。 アイデア
WPF Datagridがユーザーによって並べ替えられていることがわかりました。 Sorted
イベントはなぜですか?私はSortingイベントしか見つけることができません。Datagrid:Sortedイベントはありませんか?
私はまた、ビューにオブジェクトを公開している、CollectionView
とListCollectionView
を調査しました。
これは箱から出てくるので、私はかなり驚いています。 アイデア
datagridには「並べ替え」イベントがあり、それを購読してください!
XAML:
<DataGrid ItemsSource="{Binding YourItems}" AutoGenerateColumns="True" anUserSortColumns="True"
Sorting="DataGrid_Sorting"/>
は.csコード:
private void DataGrid_Sorting(object sender, System.Windows.Controls.DataGridSortingEventArgs e)
{
Console.WriteLine(string.Format("sorting grid by '{0}' column in {1} order", e.Column.SortMemberPath, e.Column.SortDirection));
}
これは間違いなく受け入れられているはずです – Jonesopolis
これは正解ではありません。 OPは具体的にはソートイベントではなく、ソートイベントを望んでいると言います。違いは、アイテムが既にソートされているかどうかです。 Oliver Dufnerのコメント[重複する質問](http://stackoverflow.com/questions/8416961/how-can-i-be-notified-if-a-datagrid-column-is-sorted-and-not-sorting)を指している)は正しい応答です。 – Wally
私はMSDN documentationから例をとると、ソートイベントが行われたときにソートされたイベントを発生させるために、それを調整してきました。
public class CustomDataGrid : DataGrid
{
// Create a custom routed event by first registering a RoutedEventID
// This event uses the bubbling routing strategy
public static readonly RoutedEvent SortedEvent = EventManager.RegisterRoutedEvent(
"Sorted", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CustomDataGrid));
// Provide CLR accessors for the event
public event RoutedEventHandler Sorted
{
add { AddHandler(SortedEvent, value); }
remove { RemoveHandler(SortedEvent, value); }
}
// This method raises the Sorted event
void RaiseSortedEvent()
{
RoutedEventArgs newEventArgs = new RoutedEventArgs(CustomDataGrid.SortedEvent);
RaiseEvent(newEventArgs);
}
protected override void OnSorting(DataGridSortingEventArgs eventArgs)
{
base.OnSorting(eventArgs);
RaiseSortedEvent();
}
}
コードビハインドで使用できます。
datagrid.Sorted += new RoutedEventHandler(datagrid_Sorted);
またはXAML
で<local:CustomDataGrid x:Name="datagrid" Sorted="datagrid_Sorted;"/>
MSDNには、 "なぜ" を聞いてより良い場所かもしれません。 –
ハンドルDataGridにソートし、並べ替えだけを渡します。 – Paparazzi
ハンドルソート?あなたは並べ替えを意味しますか? – Houman