2011-01-08 1 views
2

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

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

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

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

ответ

0

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

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

+0

Да, это WPF. Я, хотя tW1 = это; будет инстанцировать tW1 в MainWindow и разрешить доступ к кнопке из другого класса в другом файле. Если это не так, как мне создать или ссылаться на него? – KMC

4

Чтобы ответить на мой вопрос - используйте 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 ... какой-нибудь лучший вариант?

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