2015-01-30 4 views
-1

다른 창을 편집 할 수있는 코드를 사용하고 있습니다.만드는 방법 Window var global

var MessageBox_Window = System.Windows.Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MessageBoxWindow) as MessageBoxWindow;

내가 지속적 그러나 나는이 부분 클래스의 VAR을 넣을 수 없습니다이 윈도우의 내용을 변경할 수 있도록해야하고, 내가 다른 곳 넣어 경우 글로벌되지 않습니다 : 텍스트 상자 내부에 위치. 내가 사용하는 것이 었습니다 경우

ProjectName.MessageBoxWindow MessageBox_Window = System.Windows.Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MessageBoxWindow) as MessageBoxWindow;

을 부분 클래스, 내가 시도 할 때마다 내용을 변경, 나는 NullReferenceException.

는 액세스 할 수 있도록이 코드는 글로벌 만드는 방법이 도착 창 안쪽 어디서나?

+3

해당 창의 바깥 쪽에서 다른 창의 컨트롤에 액세스하면 안됩니다. 각 창에서 자체 내부 통제를 관리해야합니다. – Servy

+0

@Servy 내 응용 프로그램 요구 사항에 필요합니다 –

+2

응용 프로그램 요구 사항에서 응용 프로그램의 모든 클래스에서 액세스 할 수 있어야하는 코드에 대해 언급하는 이유는 무엇입니까? 그것은 비즈니스 요구 사항이 아닙니다. 비즈니스 요구 사항을 이행하는 과정에서 사용할 수있는 기술 구현과 사용을 피해야하는 기술 구현입니다. 다른 곳에서 창에 액세스하여 내부적으로 필요한 작업을 수행하십시오. – Servy

답변

0

좋아, 그래서이 작업을 수행하는 가장 쉬운 방법을 발견은이 클래스를 사용하는 것입니다 매번 긴 코드.

0

static 클래스 사용

static class globalClass 
{ 
    public static string globalData { get; set; } 
} 

을하고 설정 :

globalClass.globalData = "some value" 
1

Servy 말했듯이, 당신이 직접 그 윈도우 작업 (및 UI 아닌 다른 스레드에서 그렇게 안 그 창문의 실은 불가능하다).

공유하려는 모든 매개 변수를 포함하는 클래스가 있다고 가정하십시오. MessageBoxWindow는 이러한 매개 변수를 기반으로 그리기를 담당하지만 다른 창은 자유롭게 변경할 수 있습니다. 단지 사용 그런

static class MBW 
{ 
    public static ProjectName.MessageBoxWindow MessageBox_Window = System.Windows.Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MessageBoxWindow) as MessageBoxWindow; 
} 

:

MBW.MessageBox_Window 

밖으로 복사 할 필요없이 해당 창 내에서 모든 액세스 할 수

+0

이것이 어떻게 행해지는지 예를 들려 주시겠습니까? 공유하려는 매개 변수가 포함 된 클래스를 만들었지 만 창 자체가 클래스 정보를 얻는 방법은 무엇입니까? –