2013-07-11 2 views
0

에 대화 상자를 가져와 다음과 같이하십시오나는 버튼 창을 표시하고 전면

private void showWindow(object obj) 
{ 
    var dialog = new AddItemView(); 
    dialog.Show(); 
} 

를 버튼을 다시 클릭하면이 창이 열려있는 동안, 나는 앞으로이 창을 가지고 어떻게 새로운 것을 만들지 않습니까?

+0

모달 대화 상자? 싱글 톤 패턴과 포함 된 객체의'Activate' 메소드가 내 마음을 가로 지르는 첫 번째 아이템이다 – xmashallax

답변

2

대화 상자 개체를 저장하고 showWindow에서 이미 만들어 졌는지 확인하십시오.

대화 상자 개체에 대한 참조를 지우는 데 Windows Closed 이벤트를 사용했습니다.

AddItemView dialog; 

private void showWindow(object obj) 
{ 

    if (dialog == null) 
    { 
     dialog = new AddItemView(); 
     dialog.Show(); 
     dialog.Owner = this; 
     dialog.Closed += new EventHandler(AddItemView_Closed); 
    } 
    else 
     dialog.Activate(); 
} 

void AddItemView_Closed(object sender, EventArgs e) 
    { 

     dialog = null; 
    } 
+0

이것이 내가 찾고 있었던 것이다. 감사! – Chris

0

그냥 빨리 스케치 그러나 이것은 당신이 원하는 일을해야합니다

Window1 W = new Window1(); 

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    if (W.IsVisible) 
     W.Activate(); 
    else 
     W.Show(); 
} 

을이 그것을하지 않는 경우, 어쩌면 내가 질문을 오해했다.

수정 된 버그.

창을 인스턴스화 할 클래스 생성자에이를 추가하십시오. 창이 열리면 창을 닫을 수 없습니다.

 W.Closing += (s, e) => 
     { 
      e.Cancel = true; 
      ((Window)s).Hide(); 
     };