From 2043db6035b6113c5b0319c8738536ccda7bae56 Mon Sep 17 00:00:00 2001 From: brianlagunas_cp Date: Fri, 15 Jul 2011 21:52:26 +0000 Subject: [PATCH] PropertyGrid: added color editor. --- .../Implementation/Editors/ColorEditor.cs | 1 + .../Implementation/PropertyGrid.cs | 37 ++++++++++++++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs index a77ff2ce..9a3ff637 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Windows.Controls.Core.Converters; namespace Microsoft.Windows.Controls.PropertyGrid.Editors { diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyGrid.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyGrid.cs index 8b48a191..9e5a2b63 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyGrid.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyGrid.cs @@ -67,7 +67,7 @@ namespace Microsoft.Windows.Controls.PropertyGrid if (Properties != null) Properties.Filter(newValue); } - + #endregion //Filter #region IsCategorized @@ -133,13 +133,15 @@ namespace Microsoft.Windows.Controls.PropertyGrid protected virtual void OnSelectedObjectChanged(object oldValue, object newValue) { - SetSelectedObjectNameBinding(newValue); - - SelectedObjectType = newValue.GetType(); - - _propertyItemsCache = GetObjectProperties(newValue); - - InitializePropertyGrid(IsCategorized); + if (newValue == null) + ResetPropertyGrid(); + else + { + SetSelectedObjectNameBinding(newValue); + SelectedObjectType = newValue.GetType(); + _propertyItemsCache = GetObjectProperties(newValue); + InitializePropertyGrid(IsCategorized); + } } #endregion //SelectedObject @@ -162,8 +164,13 @@ namespace Microsoft.Windows.Controls.PropertyGrid protected virtual void OnSelectedObjectTypeChanged(Type oldValue, Type newValue) { - DisplayNameAttribute displayNameAttribute = newValue.GetCustomAttributes(false).OfType().FirstOrDefault(); - SelectedObjectTypeName = displayNameAttribute == null ? newValue.Name : displayNameAttribute.DisplayName; + if (newValue == null) + SelectedObjectTypeName = string.Empty; + else + { + DisplayNameAttribute displayNameAttribute = newValue.GetCustomAttributes(false).OfType().FirstOrDefault(); + SelectedObjectTypeName = displayNameAttribute == null ? newValue.Name : displayNameAttribute.DisplayName; + } } #endregion //SelectedObjectType @@ -407,6 +414,8 @@ namespace Microsoft.Windows.Controls.PropertyGrid editor = new IntegerUpDownEditor(); else if (propertyItem.PropertyType == typeof(DateTime)) editor = new DateTimeUpDownEditor(); + else if ((propertyItem.PropertyType == typeof(Color))) + editor = new ColorEditor(); else if (propertyItem.PropertyType.IsEnum) editor = new EnumComboBoxEditor(); else if (propertyItem.PropertyType == typeof(FontFamily) || propertyItem.PropertyType == typeof(FontWeight) || propertyItem.PropertyType == typeof(FontStyle) || propertyItem.PropertyType == typeof(FontStretch)) @@ -464,6 +473,14 @@ namespace Microsoft.Windows.Controls.PropertyGrid _dragThumb.Margin = new Thickness(-1, 0, 0, 0); } + private void ResetPropertyGrid() + { + SelectedObjectName = String.Empty; + SelectedObjectType = null; + _propertyItemsCache = null; + Properties = null; + } + #endregion //Methods } }