Это не те атрибуты, о которых я знаю, которые предназначены для украшения свойства зависимости.
Конечно, вы можете украсить класс Property, который использует свойство Dependency или даже статическое поле, в котором содержится ссылка на DependencyProperty: -
public class MyClass : DependencyObject
{
[PossibleLocationForPropertyAttribute()]
public string Description
{
get { return (string)GetValue(DescriptionProperty); }
set { SetValue(DescriptionProperty, value); }
}
[PossibleLocationForFieldAttribute()]
public static readonly DependencyProperty DescriptionProperty =
DependencyProperty.Register("Description", typeof(string), typeof(MyClass), null);
}
Однако ни один из них не поможет вам, когда все, что у вас есть, это ссылка на свойство зависимости. К сожалению, вы не можете присоединить дополнительные данные к свойству зависимости, которое можно узнать без знания типа, для которого оно зарегистрировано.
Я на самом деле никогда не пробовал это, но ...
public MyExtendedPropertyMetaData : PropertyMetaData
{
public object Token {get; private set;}
public MyExtendedPropertyMetaData(object token) : PropertyMetaData(null)
{
Token = token;
}
}
public static readonly DependencyProperty DescriptionProperty =
DependencyProperty.Register("Description", typeof(string), typeof(MyClass),
new MyExtendedMetaData("Some token could be anything"));
Теперь с учетом просто DP и , которые, как вы знаете, зарегистрированы на MyClass
, тогда: -
var meta = dp.GetMetaData(typeof(MyClass)) as MyExtendedPropertyMetadata;
string tokenData = (string)meta.Token;
Если вы знаете тип, для которого зарегистрирован DP, то вышеупомянутое на самом деле довольно аккуратно по сравнению с использованием атрибутов. Если нет, то ничто не поможет.