Подтвердить что ты не робот

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

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

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

Такие вещи, как DependencyPropertyDescriptor, недоступны в Silverlight. Кажется, мне нужно прибегнуть к размышлениям, чтобы получить ссылку. Любые предложения?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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