2011-03-19 11 views
4

목표 :
다른 사람에게 영향을주지 않고 응용 프로그램 창을 개별적으로 닫을 수 있습니다. 응용 프로그램은 WPF에서 만들어집니다.WPF 창을 별도로 닫습니다.

문제 :

창 (들)

의 WinForm에서

,이 창을 닫습니다 코드 winform.close()을하기에 충분하지만이 작동하지 않습니다를 닫을 수 없습니다 WPF.

당신은 선택은 특정 창을 닫으려면이 코드를 가질 수 있습니다

Application.Current.Windows[0].Close(); 

을하지만, 당신이 많은 창문이 있고 다른 사람에 영향을주지 않고 특정 창을 닫으려면 어떻게 작동까요?

답변

11

Application 클래스를 사용하여 설명 된대로 정확하게 Application.Windows- 속성을 통해 창을 가져옵니다. 당신이 윈도우의 코드 숨김에있는 경우, 설정 여러 Windows
Application.MainWindow 속성에 주 창을 this.Close();

구성을 호출하고 당신은 또한 응용 프로그램을 유지하려는 경우 적절한 값으로 Application.ShutdownMode 설정 주 창을 닫으면 열 수 있습니다 (예 : App.Current.ShutdownMode=ShutdownMode.OnExplicitShutdown;).

일부 사용자는 ShutdownMode에 문제가 있음을 이미 확인했습니다. 이 문제를 해결하려면 첫 번째 창을 숨기고이 창에서 보이는 응용 프로그램 창을 엽니 다. 이렇게하면 처음 만들어진 창을 닫을 때 응용 프로그램이 닫히지 않습니다. 그러나 ShutdownMode-property에 대해서도이 문제를 해결할 수 있어야합니다.
여러 창이있는 시나리오에서는 모든 창을 닫지 않고 Shutdown을 사용하여 응용 프로그램을 닫을 수 있습니다.

귀하의 질문에 대한 답변입니다. 그렇지 않다면 의견을 말하십시오.

+0

"나는 이미 관찰 한 가장 최근의 창을 닫으려면이 코드를 사용하여 코드를 사용할 수 있습니다 ShutdownMode에 문제가 발생했습니다.이 문제를 해결하려면 첫 번째 창을 숨기고이 창에서 가시적 인 응용 프로그램 창을여십시오. " 중점을 두는 것은"가시성 "속성입니까? –

+0

@FullmetalBoy : 예, 응용 프로그램이 첫 번째 창을 열고, 새 창 인스턴스를 만들고, 첫 번째 창의 가시성을 숨김으로 설정할 수 있습니다. 그러나 내가 쓴 것처럼 ShutdownMode를 적절히 설정하면 (이 작업을 수행하기 전에 OnStartup을 수행해야한다는 것을 기억하는 한)이 작업은 필요하지 않습니다. 다음 게시물은 WPF 응용 프로그램 시작에 대한 몇 가지 사항을 설명합니다. 당신에게 흥미로울 수 있습니다 : http://www.ageektrapped.com/blog/the-wpf-application-class-overview-and-gotcha/ – HCL

10

나는 HCL에 동의한다. 윈도우의 코드 숨김에서 this.Close();을 사용할 수 있습니다. 이렇게하면 winform.close();처럼 WPF 창이 닫힙니다.

또는 가까운

Window win = Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.Name == "Window Name"); 
win.Close(); 
0

에 대한 특정 창을 얻기 위해 당신은 어떤 사람들이 있는지,

Application.Current.Windows[Application.Current.Windows.Count - 1].Close(); 
관련 문제