123456789101112131415161718192021222324252627 |
- using System.Windows;
- using System.Windows.Data;
- namespace HandyControl.Controls;
- public abstract class PropertyEditorBase : DependencyObject
- {
- public abstract FrameworkElement CreateElement(PropertyItem propertyItem);
- public virtual void CreateBinding(PropertyItem propertyItem, DependencyObject element) =>
- BindingOperations.SetBinding(element, GetDependencyProperty(),
- new Binding($"{propertyItem.PropertyName}")
- {
- Source = propertyItem.Value,
- Mode = GetBindingMode(propertyItem),
- UpdateSourceTrigger = GetUpdateSourceTrigger(propertyItem),
- Converter = GetConverter(propertyItem)
- });
- public abstract DependencyProperty GetDependencyProperty();
- public virtual BindingMode GetBindingMode(PropertyItem propertyItem) => propertyItem.IsReadOnly ? BindingMode.OneWay : BindingMode.TwoWay;
- public virtual UpdateSourceTrigger GetUpdateSourceTrigger(PropertyItem propertyItem) => UpdateSourceTrigger.PropertyChanged;
- protected virtual IValueConverter GetConverter(PropertyItem propertyItem) => null;
- }
|