protected virtual void ResolveValueBinding(PropertyEditorContext <TEditor> context) { var binding = new Binding(nameof(IProperty.Value)) { Source = context.PropertyItem, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Mode = context.PropertyItem.IsReadOnly ? BindingMode.OneWay : BindingMode.TwoWay, Converter = CreateValueConverter(context) }; BindingOperations.SetBinding(context.Editor, context.ValueProperty, binding); }
public FrameworkElement CreateEditor(PropertyItem propertyItem) { if (!IsSupported(propertyItem, propertyItem.Property.PropertyType)) { return(null); } var context = new PropertyEditorContext <TEditor>(propertyItem.Property, propertyItem); context.Editor = CreateEditor(context); context.ValueProperty = GetDependencyProperty(); InitializeControl(context); ResolveValueBinding(context); return(context.Editor); }
protected virtual void InitializeControl(PropertyEditorContext <TEditor> context) { }
protected virtual IValueConverter CreateValueConverter(PropertyEditorContext <TEditor> context) { return(new NullAsDefaultConverter(context.Property.PropertyType)); }
protected virtual TEditor CreateEditor(PropertyEditorContext <TEditor> context) { return(new TEditor()); }