Как получить DependencyProperty по имени в Silverlight?

Ситуация: у Меня есть строка, которая представляет название DependencyProperty TextBox в Silverlight. Например: "TextProperty". Я должен получить ссылку на фактический TextProperty TextBox, который является DependencyProperty.

Вопрос: как я получаю ссылку на DependencyProperty (в C#), если все, что я получил, является названием свойства?

Вещи как DependencyPropertyDescriptor не доступны в Silverlight. Кажется, что я должен обратиться к отражению для получения ссылки. Какие-либо предложения?

11
задан CodeNaked 9 June 2011 в 11:39
поделиться

2 ответа

Для этого вам понадобится рефлексия:-

 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");
13
ответ дан 3 December 2019 в 07:12
поделиться

Отвечая на мой собственный вопрос: действительно, размышление, кажется, здесь лучший путь:

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);

Это делает работу за меня. :)

4
ответ дан 3 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: