diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Attributes/PropertyOrderAttribute.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Attributes/PropertyOrderAttribute.cs new file mode 100644 index 00000000..1b4bb95b --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Attributes/PropertyOrderAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace Microsoft.Windows.Controls.PropertyGrid.Attributes +{ + [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)] + public class PropertyOrderAttribute : Attribute + { + public int Order { get; set; } + + public PropertyOrderAttribute(int order) + { + Order = order; + } + } +} diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyGridUtilities.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyGridUtilities.cs index de86f096..c20502d4 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyGridUtilities.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyGridUtilities.cs @@ -33,6 +33,7 @@ namespace Microsoft.Windows.Controls.PropertyGrid PropertyItemCollection propertyCollection = new PropertyItemCollection(propertyItems); propertyCollection.GroupBy("Category"); propertyCollection.SortBy("Category", ListSortDirection.Ascending); + propertyCollection.SortBy("PropertyOrder", ListSortDirection.Ascending); propertyCollection.SortBy("DisplayName", ListSortDirection.Ascending); return propertyCollection; } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyItem.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyItem.cs index 2bff3aa1..d0981435 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyItem.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyItem.cs @@ -254,6 +254,8 @@ namespace Microsoft.Windows.Controls.PropertyGrid public PropertyGrid PropertyGrid { get; private set; } + public int PropertyOrder { get; set; } //maybe make a DP + #region PropertyType public Type PropertyType @@ -325,6 +327,7 @@ namespace Microsoft.Windows.Controls.PropertyGrid SetPropertyDescriptorProperties(); ResolveExpandableObject(); + ResolvePropertyOrder(); CommandBindings.Add(new CommandBinding(PropertyItemCommands.ResetValue, ExecuteResetValueCommand, CanExecuteResetValueCommand)); AddHandler(Mouse.PreviewMouseDownEvent, new MouseButtonEventHandler(PropertyItem_PreviewMouseDown), true); @@ -402,6 +405,15 @@ namespace Microsoft.Windows.Controls.PropertyGrid } } + private void ResolvePropertyOrder() + { + var attrs = PropertyDescriptor.Attributes.OfType(); + if (attrs.Any()) + PropertyOrder = attrs.First().Order; + else + PropertyOrder = 0; + } + private void SetPropertyDescriptorProperties() { Name = PropertyDescriptor.Name; diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj index f55a21d5..ad4a0ecb 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj @@ -274,6 +274,7 @@ +