2017-02-06 1 views
0

입니다.이 방법은 어리석은/바보 같은 질문 일 수 있지만 어쨌든이 방법은 문제가되지 않습니다. 기본적으로 클래스의 결과를 표시하는 가장 적절한 방법을 찾고 있습니다. 메인 창으로 지금 내가 이렇게 버튼을, 내가 필요하고 내가 그 잘못된 길 것을 알고, 내 현재의 지식으로이 문제를 해결 얼마나정보를 표시하거나 메인 GUI를 업데이트하는 가장 좋은 방법은


enter image description here

을을 보여줍니다 것은 내가 이렇게 클릭

private void btnSend_Click(object sender, RoutedEventArgs e) 
     { 
      new Notification().DoNotify(txtMessage.Text); 
     } 

클래스 정의는 다음과 같습니다

이러한 클래스에서 메인 윈도우의 GUI를 업데이트하는 방법을 지금

?

내가 그것을 액세스 한 후, 내부의 MainWindow를 객체와 새로운 tempclass 추가되어 사용하고 것

하나 개의 솔루션,

public class TempClass 
    { 
     public static MainWindow Main; 
    } 

public MainWindow() 
     { 
      InitializeComponent(); 
      TempClass.Main = this; 
     } 

와 SMS/이메일 클래스 :

메인 윈도우 생성자

이제이 방법이 효과적이지만 더 좋은 방법이 있어야합니다. 긴 게시물에 대해 어떻게 생각하고 미안합니까? : // 이에 대한 원리 또는 디자인 패턴이 있습니까?

+0

[이벤트] (https://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx) – Fildor

+0

동의합니다. 실제로이 종류의 이벤트를 사용했지만 잊어 버렸습니다. 언급, 좋아, 그럼 이벤트가 더 나은 방법은 무엇입니까? – ShadyOverflow

+0

무언가가 일어 났을 때 Gui *를 업데이트하고 싶습니다. * - * * 이벤트입니다. 모델을 만들려면 어떻게 가까이 가겠습니까? 전자 메일과 SMS에 이벤트를 제공하고 Main Register를 사용하면됩니다. – Fildor

답변

0

응용 프로그램이 두 개 이상있을 수있는 경우 정적 속성을 사용하지 않는 것이 좋습니다. 당신은 MainWindow를에하는 방법을 정의 할 수 있습니다 :

internal void SetMessage(string Message) 
{ 
    Dispatcher.BeginInvoke(new Action(() => {txtSMS.Text = Message;})); 
} 

특정 생성자

MainWindow parentWindow; 
void btnSend_Click(object sender, RoutedEventArgs e) 
{ 
     if (parentWindow != null) 
      _parentWindow.SetMessage(txtMessage.Text); 
} 

에 의해 또는 DependencyProperty를 정의하고 바인딩을 사용하여 여부, 다른 클래스에 MainWindow를 인스턴스를 보냅니다.

이벤트을 사용할 수도 있지만 앞에서 선호합니다.

관련 문제