Доступ к MainWIndow Control из класса в отдельном файле - PullRequest
2 голосов
/ 08 января 2011

Я добавляю TextBlock в MainWindow в XAML. И мне нужно было бы изменить TextBlock Text в отдельном классе, находящемся в отдельном файле .cs. Я попробовал следующее:

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

Это сработало, если класс находится в том же файле, что и класс MainWindow, но выдает нулевое исключение, если класс находится в отдельном файле. Я уже добавил using fooNameSpace; Все еще не работает

Я не могу найти правильный способ сделать ссылку из отдельного класса файла на MainWindow и его Control. Советы кому-нибудь? спасибо,

Ответы [ 2 ]

4 голосов
/ 08 января 2011

Чтобы ответить на мой вопрос - используйте internal вместо public.

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

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

. Внутреннее ключевое слово позволяет другому классу в другом файле CS получить доступ к элементам управления MainWindow.Но я не настолько уверен в использовании внутреннего для решения этой проблемы, поскольку это позволяет моему другому классу получить доступ ко всему остальному в моем MainWindow ... есть ли лучший вариант там?

0 голосов
/ 08 января 2011

Вы упомянули XAML, поэтому я предполагаю, что вы говорите о приложении WPF. Файлы .xaml и .xaml.cs идут рука об руку. Если вам нужно получить доступ к чему-либо в этом «контроле», вам необходимо создать его экземпляр или обратиться к нему во внешнем классе.

Что касается ошибки, вы объявляете tw1, но он не создается - именно поэтому вы получаете ошибку исключения Null. Выполнение tw1 = this также не будет работать.

...