diff --git a/Xamarin.PropertyEditing/CategoryComparer.cs b/Xamarin.PropertyEditing/CategoryComparer.cs new file mode 100644 index 0000000..108e5b8 --- /dev/null +++ b/Xamarin.PropertyEditing/CategoryComparer.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; + +namespace Xamarin.PropertyEditing +{ + internal class CategoryComparer + : IComparer + { + public static readonly CategoryComparer Instance = new CategoryComparer(); + + public int Compare (string x, string y) + { + int result = Comparer.Default.Compare (x, y); + if (result != 0 && (String.IsNullOrEmpty (x) || String.IsNullOrEmpty (y))) + result *= -1; + + return result; + } + } +} diff --git a/Xamarin.PropertyEditing/ViewModels/PanelViewModel.cs b/Xamarin.PropertyEditing/ViewModels/PanelViewModel.cs index fc5a531..4882a03 100644 --- a/Xamarin.PropertyEditing/ViewModels/PanelViewModel.cs +++ b/Xamarin.PropertyEditing/ViewModels/PanelViewModel.cs @@ -96,7 +96,7 @@ namespace Xamarin.PropertyEditing.ViewModels Dictionary> groupedTypeProperties = null; this.arranged.Clear (); - foreach (var grouping in props.GroupBy (GetGroup).OrderBy (g => g.Key)) { + foreach (var grouping in props.GroupBy (GetGroup).OrderBy (g => g.Key, CategoryComparer.Instance)) { HashSet remainingItems = null; if (ArrangeMode == PropertyArrangeMode.Category) { @@ -126,7 +126,7 @@ namespace Xamarin.PropertyEditing.ViewModels if (groupedTypeProperties != null) { // Insert type-grouped properties back in sorted. int i = 0; - foreach (var kvp in groupedTypeProperties.OrderBy (kvp => kvp.Key)) { + foreach (var kvp in groupedTypeProperties.OrderBy (kvp => kvp.Key, CategoryComparer.Instance)) { var group = new ObservableGrouping (kvp.Key) { new PropertyGroupViewModel (kvp.Key, kvp.Value, ObjectEditors) }; diff --git a/Xamarin.PropertyEditing/Xamarin.PropertyEditing.csproj b/Xamarin.PropertyEditing/Xamarin.PropertyEditing.csproj index 2cbf652..553e7e5 100644 --- a/Xamarin.PropertyEditing/Xamarin.PropertyEditing.csproj +++ b/Xamarin.PropertyEditing/Xamarin.PropertyEditing.csproj @@ -43,6 +43,7 @@ +