2014-04-01 3 views
0

작은 wpf MVVM 응용 프로그램을하고 있는데 (아마도) 아주 간단한 문제가 있습니다. button_click으로 새 창을 여는 버튼이 있습니다.모달 윈도우 블록 명령 수행

Winow1 w = new Window1() { Owner = Application.Current.MainWindow, }; 
w.DataContext = this.DataContext; 
w.ShowDialog(); 

하지만이 버튼은 명령에 바인더 제본되어 있지만, 제 명령은 모달 창에 의해 차단되고, 나는 창을 닫은 후 실행 실행 클릭 : 내 Button_click 방법 그냥이 코드를 사용합니다.

클릭하기 전에 또는 동시에 클릭하여이 명령을 수행해야합니다. 이 일을하는 방법을 아십니까?

필요한 경우 더 많은 코드를 게시 할 수 있습니다.

편집 이 명령은 목록에서 하나의 개체 만 가져 와서 여러 속성을 설정합니다. 내가 단지 Show()을 사용하면 올바르게 작동하지만, mainWindow를 클릭 할 수 없도록 모달 윈도우가 필요합니다.

+0

: 여기

은 예입니다. 명령은 창을 여는 동시에 클릭이 현재 수행중인 작업이어야합니다. – TyCobb

답변

0

UI 스레드가 대화 상자에 의해 차단되지 않도록하려면 BackgroundWorker를 사용하십시오. 내가 제대로 MVVM을 이해한다면, 당신은 당신이 필요로하는 모든 것을 수행하는 명령을 만들 거 야 http://www.dreamincode.net/forums/topic/112547-using-the-backgroundworker-in-c%23/

+0

음,이 경우에는 명령과 동일한 기능을 수행하고 button_click에서 호출하는 ViewModel에 메서드를 작성할 수 있습니다 ... 맞으면 backgroundWorker도 button_click에서 호출됩니다. – xyann00