diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/CheckBoxEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/CheckBoxEditor.cs index 28c8de73..90e4ec02 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/CheckBoxEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/CheckBoxEditor.cs @@ -3,12 +3,15 @@ using System.Windows.Controls; namespace Microsoft.Windows.Controls.PropertyGrid.Editors { - public class CheckBoxEditor : TypeEditor + public class CheckBoxEditor : TypeEditor { - protected override void Initialize() + protected override void SetControlProperties() { - Editor = new CheckBox(); Editor.Margin = new Thickness(5, 0, 0, 0); + } + + protected override void SetValueDependencyProperty() + { ValueProperty = CheckBox.IsCheckedProperty; } } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs index 2939b906..a77ff2ce 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ColorEditor.cs @@ -2,11 +2,10 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors { - public class ColorEditor : TypeEditor + public class ColorEditor : TypeEditor { - protected override void Initialize() + protected override void SetValueDependencyProperty() { - Editor = new ColorPicker(); ValueProperty = ColorPicker.SelectedColorProperty; } } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ComboBoxEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ComboBoxEditor.cs index f1bacaf1..20b8537d 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ComboBoxEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/ComboBoxEditor.cs @@ -3,11 +3,10 @@ using System.Windows.Controls; namespace Microsoft.Windows.Controls.PropertyGrid.Editors { - public abstract class ComboBoxEditor : TypeEditor + public abstract class ComboBoxEditor : TypeEditor { - protected override void Initialize() + protected override void SetValueDependencyProperty() { - Editor = new ComboBox(); ValueProperty = ComboBox.SelectedItemProperty; } @@ -17,11 +16,11 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors base.Attach(propertyItem); } + protected abstract IList CreateItemsSource(PropertyItem propertyItem); + private void SetItemsSource(PropertyItem propertyItem) { - (Editor as ComboBox).ItemsSource = CreateItemsSource(propertyItem); + Editor.ItemsSource = CreateItemsSource(propertyItem); } - - protected abstract IList CreateItemsSource(PropertyItem propertyItem); } } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DateTimeUpDownEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DateTimeUpDownEditor.cs index 8f8b5889..abe8ad77 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DateTimeUpDownEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DateTimeUpDownEditor.cs @@ -2,11 +2,10 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors { - public class DateTimeUpDownEditor : TypeEditor + public class DateTimeUpDownEditor : TypeEditor { - protected override void Initialize() + protected override void SetValueDependencyProperty() { - Editor = new DateTimeUpDown(); ValueProperty = DateTimeUpDown.ValueProperty; } } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/EnumComboBoxEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/EnumComboBoxEditor.cs index 948bb2af..fb5def1a 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/EnumComboBoxEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/EnumComboBoxEditor.cs @@ -2,27 +2,14 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using System.Windows.Controls; namespace Microsoft.Windows.Controls.PropertyGrid.Editors { - public class EnumComboBoxEditor : TypeEditor + public class EnumComboBoxEditor : ComboBoxEditor { - protected override void Initialize() + protected override IList CreateItemsSource(PropertyItem propertyItem) { - Editor = new ComboBox(); - ValueProperty = ComboBox.SelectedItemProperty; - } - - public override void Attach(PropertyItem propertyItem) - { - SetItemsSource(propertyItem); - base.Attach(propertyItem); - } - - private void SetItemsSource(PropertyItem propertyItem) - { - (Editor as ComboBox).ItemsSource = GetValues(propertyItem.PropertyType); + return GetValues(propertyItem.PropertyType); } private static object[] GetValues(Type enumType) diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/IntegerUpDownEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/IntegerUpDownEditor.cs index d69ba25e..209cd7e1 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/IntegerUpDownEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/IntegerUpDownEditor.cs @@ -4,13 +4,12 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors { public class IntegerUpDownEditor : NumericUpDownEditor { - protected override void SetEditorProperties() + protected override void SetControlProperties() { - NumericUpDown nud = (NumericUpDown)Editor; - nud.Maximum = int.MaxValue; - nud.Minimum = int.MinValue; - nud.ValueType = typeof(int); - nud.FormatString = "F0"; + Editor.Maximum = int.MaxValue; + Editor.Minimum = int.MinValue; + Editor.ValueType = typeof(int); + Editor.FormatString = "F0"; } } } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/NumericUpDownEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/NumericUpDownEditor.cs index 3760f8fc..283106bd 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/NumericUpDownEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/NumericUpDownEditor.cs @@ -2,18 +2,11 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors { - public class NumericUpDownEditor : TypeEditor + public class NumericUpDownEditor : TypeEditor { - protected override void Initialize() + protected override void SetValueDependencyProperty() { - Editor = new NumericUpDown(); ValueProperty = NumericUpDown.ValueProperty; - SetEditorProperties(); - } - - protected virtual void SetEditorProperties() - { - //TODO: override in derived classes to specify custom value type } } } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBlockEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBlockEditor.cs index 7ee388cd..67505e9e 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBlockEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBlockEditor.cs @@ -1,18 +1,18 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Windows.Controls; namespace Microsoft.Windows.Controls.PropertyGrid.Editors { - public class TextBlockEditor : TypeEditor + public class TextBlockEditor : TypeEditor { - protected override void Initialize() + protected override void SetValueDependencyProperty() { - Editor = new TextBlock(); - (Editor as TextBlock).Margin = new System.Windows.Thickness(5, 0, 0, 0); ValueProperty = TextBlock.TextProperty; } + + protected override void SetControlProperties() + { + Editor.Margin = new System.Windows.Thickness(5, 0, 0, 0); + } } } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBoxEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBoxEditor.cs index 4ec0ae30..5efae112 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBoxEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TextBoxEditor.cs @@ -3,11 +3,10 @@ using System.Windows.Controls; namespace Microsoft.Windows.Controls.PropertyGrid.Editors { - public class TextBoxEditor : TypeEditor + public class TextBoxEditor : TypeEditor { - protected override void Initialize() + protected override void SetValueDependencyProperty() { - Editor = new TextBox(); ValueProperty = TextBox.TextProperty; } } diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TypeEditor.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TypeEditor.cs index 134e5238..aa4e8eef 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TypeEditor.cs +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/TypeEditor.cs @@ -4,11 +4,12 @@ using System.Windows.Data; namespace Microsoft.Windows.Controls.PropertyGrid.Editors { - public abstract class TypeEditor : ITypeEditor + public abstract class TypeEditor : ITypeEditor + where T : FrameworkElement, new() { #region Properties - protected FrameworkElement Editor { get; set; } + protected T Editor { get; set; } protected DependencyProperty ValueProperty { get; set; } #endregion //Properties @@ -17,7 +18,9 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors public TypeEditor() { - Initialize(); + Editor = new T(); + SetValueDependencyProperty(); + SetControlProperties(); } #endregion //Constructors @@ -26,7 +29,7 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors public virtual void Attach(PropertyItem propertyItem) { - ResolveBinding(propertyItem); + ResolveValueBinding(propertyItem); } public virtual FrameworkElement ResolveEditor() @@ -38,24 +41,30 @@ namespace Microsoft.Windows.Controls.PropertyGrid.Editors #region Methods - protected abstract void Initialize(); + protected virtual IValueConverter CreateValueConverter() + { + return null; + } - protected virtual void ResolveBinding(PropertyItem propertyItem) + protected virtual void ResolveValueBinding(PropertyItem propertyItem) { var _binding = new Binding("Value"); _binding.Source = propertyItem; _binding.ValidatesOnExceptions = true; _binding.ValidatesOnDataErrors = true; _binding.Mode = propertyItem.IsWriteable ? BindingMode.TwoWay : BindingMode.OneWay; - _binding.Converter = CreateConverter(); + _binding.Converter = CreateValueConverter(); BindingOperations.SetBinding(Editor, ValueProperty, _binding); } - protected virtual IValueConverter CreateConverter() + protected virtual void SetControlProperties() { - return null; + //TODO: implement in derived class } + protected abstract void SetValueDependencyProperty(); + + #endregion //Methods } }