namespace System.Activities.Presentation.PropertyEditing { using System; using System.ComponentModel; using System.Globalization; using System.Text; using System.Windows; using System.Activities.Presentation.Internal.Properties; using System.Activities.Presentation; using System.Runtime; /// /// Container for any and all inline editor logic for properties. This class can hold /// a single DataTemplates - one for Inline editor. /// public class PropertyValueEditor { private DataTemplate _inlineEditorTemplate; /// /// Creates a PropertyValueEditor /// public PropertyValueEditor() { } /// /// Creates a PropertyValueEditor /// /// The DataTemplate that is used for an inline editor. /// This DataTemplate has its DataContext set to a PropertyValue public PropertyValueEditor(DataTemplate inlineEditorTemplate) { _inlineEditorTemplate = inlineEditorTemplate; } /// /// Gets or sets the InlineEditorTemplate -- the DataTemplate that is used for an inline editor. /// This DataTemplate has its DataContext set to a PropertyValue /// [Fx.Tag.KnownXamlExternalAttribute] public DataTemplate InlineEditorTemplate { get { return _inlineEditorTemplate; } set { _inlineEditorTemplate = value; } } internal virtual DataTemplate GetPropertyValueEditor(PropertyContainerEditMode mode) { return (mode == PropertyContainerEditMode.Inline) ? _inlineEditorTemplate : null; } /// /// Utility method that creates a new EditorAttribute for the specified /// PropertyValueEditor /// /// PropertyValueEditor instance for which to create /// the new EditorAttribute /// New EditorAttribute for the specified PropertyValueEditor public static EditorAttribute CreateEditorAttribute(PropertyValueEditor editor) { if (editor == null) throw FxTrace.Exception.ArgumentNull("editor"); return CreateEditorAttribute(editor.GetType()); } /// /// Utility method that creates a new EditorAttribute for the specified /// PropertyValueEditor type /// /// PropertyValueEditor type for which to create /// the new EditorAttribute /// New EditorAttribute for the specified PropertyValueEditor type public static EditorAttribute CreateEditorAttribute(Type propertyValueEditorType) { if (propertyValueEditorType == null) throw FxTrace.Exception.ArgumentNull("propertyValueEditorType"); if (!typeof(PropertyValueEditor).IsAssignableFrom(propertyValueEditorType)) throw FxTrace.Exception.AsError(new ArgumentException( string.Format( CultureInfo.CurrentCulture, Resources.Error_ArgIncorrectType, "propertyValueEditorType", typeof(PropertyValueEditor).Name))); return new EditorAttribute(propertyValueEditorType, typeof(PropertyValueEditor)); } } }