2017-02-18 1 views
1

У меня есть XAML шаблона для моего класса MainWindow:не может получить доступ к поданным от XAML шаблона через FieldInfo

...  
<Button x:Name="button1" Content="Button" Click="button1_Click" /> 
<Label x:Name="superLabel" Content="Super content!" /> 
... 

Я хочу доступ superLabel поля через relfections, после нажатия кнопки, как это:

public void button1_Click(object sender, RoutedEventArgs e) 
{ 
    Type t = typeof(MainWindow); 
    FieldInfo test1 = t.GetField("superLabel"); // test1 == null 
    FieldInfo test2 = t.GetRuntimeField("superLabel"); // test2 == null 
    ... 
} 

, но я получаю нуль в каждом тесте ...

ответ

1

ярлык не public - вы должны добавить BindingFlags в качестве второго аргумента:

FieldInfo test1 = t.GetField("superLabel", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); 
+0

это работает! спасибо @Roma –

+0

@DariuszFilipiak, добро пожаловать –