2011-01-08 6 views
2

TextBlock을 XAML의 MainWindow에 추가합니다. 그리고 별도의 .cs 파일에있는 별도의 클래스에서 TextBlock Text를 변경해야합니다. 나는 다음과 같은 시도 : 클래스가 MainWindow를 클래스와 같은 파일에있는 경우별도의 파일에있는 클래스에서 MainWIndow 컨트롤에 액세스

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

그것은 일을하지만 클래스는 별도의 파일에 상주하는 경우 그것은 나에게 널 예외가 발생합니다. 난 이미 추가했습니다 using fooNameSpace; 아직도 작동하지 않습니다

별도의 파일 클래스에서 MainWindow 및 해당 컨트롤에 대한 참조를 만드는 올바른 방법을 알아낼 수 없습니다. 팁 누군가? 감사합니다.

답변

0

XAML에 대해 언급 했으므로 WPF 응용 프로그램에 대해 이야기하고 있다고 가정합니다. .xaml 및 .xaml.cs 파일이 함께 사용됩니다. 해당 "컨트롤"에 액세스해야하는 경우이를 인스턴스화하거나 외부 클래스에서 해당 참조가 필요합니다.

오류의 경우 tw1을 선언하지만 인스턴스화되지 않으므로 Null 예외 오류가 발생합니다. tw1 = this을 수행하는 것도 작동하지 않습니다.

+0

예, WPF입니다. 나는 tW1 = this이지만; tW1을 MainWindow에 인스턴스화하고 다른 파일의 다른 클래스에있는 버튼에 액세스 할 수있게합니다. 그렇지 않은 경우 어떻게 인스턴스화하거나 참조해야합니까? – KMC

4

내 질문에 대한 답변 - public 대신 internal을 사용하십시오.

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

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

내부 키워드는 컨트롤을 MainWindow를에 액세스하려면 다른 CS 파일에 다른 클래스를 할 수 있습니다. 하지만 내 다른 클래스가 내 MainWindow의 다른 모든 것에 액세스 할 수있게 허용 할 때이 문제를 해결하기 위해 내부를 사용하는 것에 대해서는 확신 할 수 없습니다 ... 더 나은 옵션이 있습니까?

관련 문제