/// <summary> /// Utility method that creates a new EditorAttribute for the specified /// PropertyValueEditor /// </summary> /// <param name="editor">PropertyValueEditor instance for which to create /// the new EditorAttribute</param> /// <returns>New EditorAttribute for the specified PropertyValueEditor</returns> public static EditorAttribute CreateEditorAttribute(PropertyValueEditor editor) { if (editor == null) { throw FxTrace.Exception.ArgumentNull("editor"); } return(CreateEditorAttribute(editor.GetType())); }
/// <summary> /// Helper class that attempts to find the DataTemplate for the requested PropertyContainerEditMode /// given the currently displayed PropertyEntry and the currently set default PropertyValueEditors. /// /// If the requested DataTemplate is found on the PropertyValueEditor associated with the displayed /// control, is it returned. /// /// Otherwise if the requested DataTemplate is found on DefaultStandardValuesPropertyValueEditor, /// it is returned. /// /// Otherwise if the requested DataTemplate is found on DefaultPropertyValueEditor, /// it is returned. /// /// Otherwise null is returned. /// </summary> /// <param name="editMode">The editMode for which the DataTemplate should be retrieved</param> /// <returns>Most relevant DataTemplate for the specified edit mode based on the currently /// displayed PropertyEntry and the current set of default PropertyValueEditors, or null if not /// found.</returns> private DataTemplate FindPropertyValueEditorTemplate(PropertyContainerEditMode editMode) { PropertyEntry property = this.PropertyEntry; PropertyValueEditor editor = null; DataTemplate requestedTemplate = null; // Look at property if (property != null) { editor = property.PropertyValueEditor; if (editor != null) { requestedTemplate = editor.GetPropertyValueEditor(editMode); } } if (requestedTemplate != null) { return(requestedTemplate); } // Is the property of type enum and used as flags? if (IsFlagsProperty(property)) { requestedTemplate = this.GetFlagEditorTemplate(editMode); } if (requestedTemplate != null) { return(requestedTemplate); } // Does the property have standard values? if (property != null && property.HasStandardValuesInternal) { editor = this.DefaultStandardValuesPropertyValueEditor; if (editor != null) { requestedTemplate = editor.GetPropertyValueEditor(editMode); } } if (requestedTemplate != null) { return(requestedTemplate); } // Use the default editor = this.DefaultPropertyValueEditor; if (editor != null) { requestedTemplate = editor.GetPropertyValueEditor(editMode); } return(requestedTemplate); }
// Clear everything this class caches public void ClearAll() { _categoryName = null; _description = null; _isAdvanced = null; _isBrowsable = null; _propertyValueEditor = null; _propertyOrder = null; _categoryEditorTypes = null; _displayName = null; // Internal properties we don't bind to and, hence, // don't need to fire PropertyChanged event: _isAttached = null; ClearValueRelatedCacheItems(); _parent.OnPropertyChanged("CategoryName"); _parent.OnPropertyChanged("Description"); _parent.OnPropertyChanged("IsAdvanced"); _parent.OnPropertyChanged("IsBrowsable"); _parent.OnPropertyChanged("PropertyValueEditor"); _parent.OnPropertyChanged("PropertyOrder"); _parent.OnPropertyChanged("CategoryEditorTypes"); _parent.OnPropertyChanged("DisplayName"); }
/// <summary> /// Utility method that creates a new EditorAttribute for the specified /// PropertyValueEditor /// </summary> /// <param name="editor">PropertyValueEditor instance for which to create /// the new EditorAttribute</param> /// <returns>New EditorAttribute for the specified PropertyValueEditor</returns> public static EditorAttribute CreateEditorAttribute(PropertyValueEditor editor) { if (editor == null) throw FxTrace.Exception.ArgumentNull("editor"); return CreateEditorAttribute(editor.GetType()); }