|
|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|