Browse Source

Add custom IComparer sorting to the DataGrid page

pull/4687/head
Maksym Katsydan 6 years ago
parent
commit
b94748795a
  1. 37
      samples/ControlCatalog/Pages/DataGridPage.xaml.cs

37
samples/ControlCatalog/Pages/DataGridPage.xaml.cs

@ -1,8 +1,12 @@
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using ControlCatalog.Models;
using Avalonia.Collections;
using Avalonia.Data;
namespace ControlCatalog.Pages
{
@ -11,13 +15,23 @@ namespace ControlCatalog.Pages
public DataGridPage()
{
this.InitializeComponent();
var dataGridSortDescription = DataGridSortDescription.FromPath(nameof(Country.Region), ListSortDirection.Ascending, new ReversedStringComparer());
var colelctionView1 = new DataGridCollectionView(Countries.All);
colelctionView1.SortDescriptions.Add(dataGridSortDescription);
var dg1 = this.FindControl<DataGrid>("dataGrid1");
dg1.IsReadOnly = true;
dg1.LoadingRow += Dg1_LoadingRow;
var collectionView1 = new DataGridCollectionView(Countries.All);
//collectionView.GroupDescriptions.Add(new PathGroupDescription("Region"));
dg1.Items = collectionView1;
dg1.Sorting += (s, a) =>
{
var property = ((a.Column as DataGridBoundColumn)?.Binding as Binding).Path;
if (property == dataGridSortDescription.PropertyPath
&& !colelctionView1.SortDescriptions.Contains(dataGridSortDescription))
{
colelctionView1.SortDescriptions.Add(dataGridSortDescription);
}
};
dg1.Items = colelctionView1;
var dg2 = this.FindControl<DataGrid>("dataGridGrouping");
dg2.IsReadOnly = true;
@ -53,5 +67,20 @@ namespace ControlCatalog.Pages
{
AvaloniaXamlLoader.Load(this);
}
private class ReversedStringComparer : IComparer<object>, IComparer
{
public int Compare(object x, object y)
{
if (x is string left && y is string right)
{
var reversedLeft = new string(left.Reverse().ToArray());
var reversedRight = new string(right.Reverse().ToArray());
return reversedLeft.CompareTo(reversedRight);
}
return Comparer.Default.Compare(x, y);
}
}
}
}

Loading…
Cancel
Save