本文整理汇总了C#中PropertyItem.GetAttribute方法的典型用法代码示例。如果您正苦于以下问题:C# PropertyItem.GetAttribute方法的具体用法?C# PropertyItem.GetAttribute怎么用?C# PropertyItem.GetAttribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PropertyItem
的用法示例。
在下文中一共展示了PropertyItem.GetAttribute方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ImageVaueEditor
public ImageVaueEditor(PropertyGridLabel label, PropertyItem property)
: base(label, property)
{
property.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(property_PropertyChanged);
property.ValueError += new EventHandler<ExceptionEventArgs>(property_ValueError);
_attribute = property.GetAttribute<ImageAttribute>();
if(null == _attribute)
{
_attribute = new ImageAttribute();
_attribute.OnlyImage = false;
}
_grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1d, GridUnitType.Auto) });
_grid.ColumnDefinitions.Add(new ColumnDefinition());
_grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1d, GridUnitType.Auto) });
_grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1d, GridUnitType.Auto) });
_grid.Children.Add(_image);
_grid.Children.Add(_text);
_grid.Children.Add(_removeButton);
_grid.Children.Add(_broswerButton);
_image.SetValue(Grid.ColumnProperty, 0);
_text.SetValue(Grid.ColumnProperty, 1);
_removeButton.SetValue(Grid.ColumnProperty, 2);
_broswerButton.SetValue(Grid.ColumnProperty, 3);
this.Content = _grid;
_broswerButton.Click += BroswerButton_Click;
_removeButton.Click += RemoveButton_Click;
UpdateLabel(property.Value);
_text.GotFocus += Text_GotFocus;
_text.Background = null;
_text.BorderBrush = null;
_text.BorderThickness = new Thickness();
}
示例2: GetEditor
public static ValueEditorBase GetEditor(PropertyItem propertyItem, PropertyGridLabel label)
{
if (propertyItem == null) throw new ArgumentNullException("propertyItem");
EditorAttribute attribute = propertyItem.GetAttribute<EditorAttribute>();
if (attribute != null)
{
Type editorType = Type.GetType(attribute.EditorTypeName, false);
if (editorType != null)
return Activator.CreateInstance(editorType) as ValueEditorBase;
}
Type propertyType = propertyItem.PropertyType;
ValueEditorBase editor = GetEditor(propertyType, label, propertyItem);
while (editor == null && propertyType.BaseType != null)
{
propertyType = propertyType.BaseType;
editor = GetEditor(propertyType, label, propertyItem);
}
return editor;
}
示例3: SetProperties
/// <summary>
/// Sets the properties.
/// </summary>
/// <param name="pi">The property item.</param>
/// <param name="instance">The instance.</param>
protected virtual void SetProperties(PropertyItem pi, object instance)
{
var tabName = this.DefaultTabName ?? instance.GetType().Name;
var categoryName = this.DefaultCategoryName;
// find the declaring type
Type declaringType = pi.Descriptor.ComponentType;
var propertyInfo = instance.GetType().GetProperty(pi.Descriptor.Name);
if (propertyInfo != null)
{
declaringType = propertyInfo.DeclaringType;
}
if (declaringType != this.CurrentDeclaringType)
{
this.CurrentCategory = null;
}
this.CurrentDeclaringType = declaringType;
if (!this.InheritCategories)
{
this.CurrentCategory = null;
}
var ca = pi.GetAttribute<LocalizableCategory>();
if (ca != null)
{
this.CurrentCategory = ca.LocalizedCategory;
this.CurrentCategoryDeclaringType = declaringType;
}
var category = this.CurrentCategory ?? (this.DefaultCategoryName ?? pi.Descriptor.Category);
if (category != null)
{
var items = category.Split('|');
if (items.Length == 2)
{
tabName = items[0];
categoryName = items[1];
}
if (items.Length == 1)
{
categoryName = items[0];
}
}
var displayName = this.GetDisplayName(pi.Descriptor, declaringType);
var description = this.GetDescription(pi.Descriptor, declaringType);
pi.DisplayName = this.GetLocalizedString(displayName, declaringType);
pi.Description = this.GetLocalizedDescription(description, declaringType);
pi.Category = this.GetLocalizedString(categoryName, this.CurrentCategoryDeclaringType);
pi.Tab = this.GetLocalizedString(tabName, this.CurrentCategoryDeclaringType);
// pi.CategoryDescription = this.GetLocalizedDescription(categoryName, this.CurrentCategoryDeclaringType);
// pi.TabDescription = this.GetLocalizedDescription(tabName, this.CurrentCategoryDeclaringType);
// Find descriptors by convention
pi.IsEnabledDescriptor = pi.GetDescriptor(string.Format(this.EnabledPattern, pi.PropertyName));
pi.IsVisibleDescriptor = pi.GetDescriptor(string.Format(this.VisiblePattern, pi.PropertyName));
pi.OptionalDescriptor = pi.GetDescriptor(string.Format(this.OptionalPattern, pi.PropertyName));
foreach (Attribute attribute in pi.Descriptor.Attributes)
{
this.SetAttribute(attribute, pi, instance);
}
pi.IsOptional = pi.OptionalDescriptor != null;
if (pi.IsComment)
{
pi.HeaderPlacement = HeaderPlacement.Hidden;
}
if (pi.Descriptor.PropertyType == typeof(TimeSpan) && pi.Converter == null)
{
pi.Converter = new TimeSpanToStringConverter();
pi.ConverterParameter = pi.FormatString;
}
}
示例4: SetProperties
/// <summary>
/// Sets the properties.
/// </summary>
/// <param name="pi">
/// The property item.
/// </param>
protected virtual void SetProperties(PropertyItem pi)
{
var pd = pi.Descriptor;
var properties = pi.Properties;
var tabName = this.DefaultTabName ?? pi.Instance.GetType().Name;
var categoryName = this.DefaultCategoryName;
// find the declaring type
Type declaringType = pi.Descriptor.ComponentType;
var propertyInfo = pi.Instance.GetType().GetProperty(pi.Descriptor.Name);
if (propertyInfo != null)
{
declaringType = propertyInfo.DeclaringType;
}
if (declaringType != this.CurrentDeclaringType)
{
this.CurrentCategory = null;
}
this.CurrentDeclaringType = declaringType;
if (!this.InheritCategories)
{
this.CurrentCategory = null;
}
var ca = AttributeHelper.GetFirstAttribute<CategoryAttribute>(pd);
if (ca != null)
{
this.CurrentCategory = ca.Category;
this.CurrentCategoryDeclaringType = declaringType;
}
var category = this.CurrentCategory ?? (this.DefaultCategoryName ?? pd.Category);
if (category != null)
{
var items = category.Split('|');
if (items.Length == 2)
{
tabName = items[0];
categoryName = items[1];
}
if (items.Length == 1)
{
categoryName = items[0];
}
}
var displayName = this.GetDisplayName(pd, declaringType);
var description = this.GetDescription(pd, declaringType);
pi.DisplayName = this.GetLocalizedString(displayName, declaringType);
pi.Description = this.GetLocalizedDescription(description, declaringType);
pi.Category = this.GetLocalizedString(categoryName, this.CurrentCategoryDeclaringType);
pi.CategoryDescription = this.GetLocalizedDescription(categoryName, this.CurrentCategoryDeclaringType);
pi.Tab = this.GetLocalizedString(tabName, this.CurrentCategoryDeclaringType);
pi.TabDescription = this.GetLocalizedDescription(tabName, this.CurrentCategoryDeclaringType);
// Find descriptors by convention
pi.IsEnabledDescriptor = pi.GetDescriptor(string.Format(this.EnabledPattern, pd.Name));
pi.IsVisibleDescriptor = pi.GetDescriptor(string.Format(this.VisiblePattern, pd.Name));
pi.OptionalDescriptor = pi.GetDescriptor(string.Format(this.OptionalPattern, pd.Name));
pi.UseRadioButtons = pi.GetAttribute<RadioButtonsAttribute>() != null;
var fp = pi.GetAttribute<FontPreviewAttribute>();
pi.PreviewFonts = fp != null;
if (fp != null)
{
pi.FontSize = fp.Size;
pi.FontWeight = fp.Weight;
pi.FontFamilyPropertyDescriptor = pi.GetDescriptor(fp.FontFamilyPropertyName);
}
var fpa = pi.GetAttribute<FilePathAttribute>();
pi.IsFilePath = fpa != null;
if (fpa != null)
{
pi.FilePathFilter = fpa.Filter;
pi.FilePathDefaultExtension = fpa.DefaultExtension;
pi.IsFileOpenDialog = fpa.UseOpenDialog;
}
var dpa = pi.GetAttribute<DirectoryPathAttribute>();
pi.IsDirectoryPath = dpa != null;
foreach (var da in pi.GetAttributes<DataTypeAttribute>())
{
pi.DataTypes.Add(da.DataType);
switch (da.DataType)
//.........这里部分代码省略.........
示例5: GetEditor
public static PropertyEditor GetEditor(PropertyGridLabel label, PropertyItem propertyItem) {
if (propertyItem == null) throw new ArgumentNullException("propertyItem");
PropertyEditor v_editor = null;
EditorAttribute attribute = propertyItem.GetAttribute<EditorAttribute>();
if (attribute != null) {
ConstructorInfo ci = attribute.EditorType.GetConstructor(new Type[] { typeof(PropertyGridLabel), typeof(PropertyItem) });
v_editor = ci.Invoke(new Object[] { label, propertyItem }) as PropertyEditor;
}
if (v_editor == null) {
Type propertyType = propertyItem.PropertyType;
v_editor = _getEditorByType(propertyType, label, propertyItem);
while (v_editor == null && propertyType.BaseType != null) {
propertyType = propertyType.BaseType;
v_editor = _getEditorByType(propertyType, label, propertyItem);
}
}
return v_editor;
}
示例6: SetProperties
/// <summary>
/// Sets the properties.
/// </summary>
/// <param name="pi">The property item.</param>
/// <param name="instance">The instance.</param>
protected virtual void SetProperties(PropertyItem pi, object instance)
{
var tabName = this.DefaultTabName ?? instance.GetType().Name;
var categoryName = this.DefaultCategoryName;
// find the declaring type
var declaringType = pi.Descriptor.ComponentType;
var propertyInfo = instance.GetType().GetProperty(pi.Descriptor.Name);
if (propertyInfo != null)
{
declaringType = propertyInfo.DeclaringType;
}
if (declaringType != this.CurrentDeclaringType)
{
this.CurrentCategory = null;
}
this.CurrentDeclaringType = declaringType;
if (!this.InheritCategories)
{
this.CurrentCategory = null;
}
var ca = pi.GetAttribute<System.ComponentModel.CategoryAttribute>();
if (ca != null)
{
this.CurrentCategory = ca.Category;
this.CurrentCategoryDeclaringType = declaringType;
}
var ca2 = pi.GetAttribute<DataAnnotations.CategoryAttribute>();
if (ca2 != null)
{
this.CurrentCategory = ca2.Category;
this.CurrentCategoryDeclaringType = declaringType;
}
var category = this.CurrentCategory ?? (this.DefaultCategoryName ?? this.GetCategory(pi.Descriptor, declaringType));
if (category != null)
{
var items = category.Split('|');
if (items.Length == 2)
{
tabName = items[0];
categoryName = items[1];
}
if (items.Length == 1)
{
categoryName = items[0];
}
}
var displayName = this.GetDisplayName(pi.Descriptor, declaringType);
var description = this.GetDescription(pi.Descriptor, declaringType);
// Localize the strings
pi.DisplayName = this.GetLocalizedString(displayName, declaringType);
pi.Description = this.GetLocalizedDescription(description, declaringType);
pi.Category = this.GetLocalizedString(categoryName, this.CurrentCategoryDeclaringType);
pi.Tab = this.GetLocalizedString(tabName, this.CurrentCategoryDeclaringType);
pi.IsReadOnly = pi.Descriptor.IsReadOnly();
// Find descriptors by convention
pi.IsEnabledDescriptor = pi.GetDescriptor(string.Format(this.EnabledPattern, pi.PropertyName));
var isVisibleDescriptor = pi.GetDescriptor(string.Format(this.VisiblePattern, pi.PropertyName));
if (isVisibleDescriptor != null)
{
pi.IsVisibleDescriptor = isVisibleDescriptor;
pi.IsVisibleValue = true;
}
pi.OptionalDescriptor = pi.GetDescriptor(string.Format(this.OptionalPattern, pi.PropertyName));
foreach (Attribute attribute in pi.Descriptor.Attributes)
{
this.SetAttribute(attribute, pi, instance);
}
pi.IsOptional = pi.IsOptional || pi.OptionalDescriptor != null;
if (pi.Descriptor.PropertyType == typeof(TimeSpan) && pi.Converter == null)
{
pi.Converter = new TimeSpanToStringConverter();
pi.ConverterParameter = pi.FormatString;
}
}