Ситуация: у Меня есть строка, которая представляет название DependencyProperty TextBox в Silverlight. Например: "TextProperty". Я должен получить ссылку на фактический TextProperty TextBox, который является DependencyProperty.
Вопрос: как я получаю ссылку на DependencyProperty (в C#), если все, что я получил, является названием свойства?
Вещи как DependencyPropertyDescriptor не доступны в Silverlight. Кажется, что я должен обратиться к отражению для получения ссылки. Какие-либо предложения?
Для этого вам понадобится рефлексия:-
public static DependencyProperty GetDependencyProperty(Type type, string name)
{
FieldInfo fieldInfo = type.GetField(name, BindingFlags.Public | BindingFlags.Static);
return (fieldInfo != null) ? (DependencyProperty)fieldInfo.GetValue(null) : null;
}
Использование:-
var dp = GetDependencyProperty(typeof(TextBox), "TextProperty");
Отвечая на мой собственный вопрос: действительно, размышление, кажется, здесь лучший путь:
Control control = <create some control with a property called MyProperty here>;
Type type = control.GetType();
FieldInfo field = type.GetField("MyProperty");
DependencyProperty dp = (DependencyProperty)field.GetValue(control);
Это делает работу за меня. :)