Access MainWIndow Control from a class in a separa

2019-02-27 21:36发布

问题:

I add a TextBlock to the MainWindow in XAML. And I would need to change the TextBlock Text in a separate class resided in a separate .cs file. I tried the following:

private static fooNameSpace.MainWindow tW1;
tW1 = this;
tW1.textBlock1.Text = "This is a paragraph";

It worked if the class is reside in the same file as the MainWindow class, But it throws me an null exception if the class is reside in a separate file. I have already added the using fooNameSpace; Still doesn't work

I can't figure out the right way to make a reference from a separate file class to the MainWindow and it's Control. Tips anyone? thanks,

回答1:

To answer my question - use internal instead of public.

// in MainWindow.xaml.cs internal
internal static fooNameSpace.MainWindow tW1;

// in foo.cs
MainWindow.tW1.txtBlock1.Text = "This is a paragraph";

the internal keyword allows other class in other cs file to get access to MainWindow controls. But I'm not so sure about using internal to solve this problem as it allow my other class to get access to everything else in my MainWindow...any better option out there?



回答2:

You mentioned XAML, so I will assume you are talking about a WPF application. the .xaml and .xaml.cs files go hand in hand. If you need to access anything in that "control" you will need to instantiate it or need its reference in the outside class.

As for the error, you declare the tw1 but it is not instantiated - which is the reason you are getting a Null exception error. Doing tw1 = this is also won't work.



标签: wpf controls