2017-02-07 13 views
1

Я могу получить свойство ShowKeyboardCuesProperty, которое является прикрепленным свойством зависимостей, присутствующим в классе KeyboardNavigation. Это внутренний статический DP без свойства CLR.Установка значения прикрепленного свойства с помощью Reflection

(typeof(KeyboardNavigation).GetMember("ShowKeyboardCuesProperty", MemberTypes.All, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)[0] as FieldInfo) 

Мне нужно установить это прикрепленное свойство на другой элемент, ссылка на который я могу легко получить. Давайте укажем на этот элемент как DependencyObject d.

Как я могу вызвать d.SetValue() и установить указанное выше свойство (из поля FieldInfo) в true?

Или есть ли другой способ добиться того же?

+0

Прикрепленные свойства строго особенность XAML. Это не связано с программированием Windows API. – IInspectable

ответ

1

Попробуйте это:

FieldInfo fi = (typeof(KeyboardNavigation).GetMember("ShowKeyboardCuesProperty", 
    MemberTypes.All, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)[0] as FieldInfo); 

DependencyObject o = new Button(); 

DependencyProperty dp = fi.GetValue(o) as DependencyProperty; 
bool value = (bool)o.GetValue(dp); //= false 
o.SetValue(dp, true); 
value = (bool)o.GetValue(dp); // = true 
+0

Благодарим вас за руководство. – Harsha

 Смежные вопросы

  • Нет связанных вопросов^_^