2016-07-01 1 views
-1

Window.Show() 또는 Window.ShowDialog()를 사용하지 않고 WPF 응용 프로그램을 개발 중이며, 이는 단순한 MainWindow이고 지정된 UserControls로로드됩니다. 장소 소유자.어쨌든 Window.ShowDialog()와 같은 UI 스레드를 차단할 수 있습니까? WPF

그러나 응용 프로그램이 자리 표시 자에 컨트롤을 표시 할 때 Window.ShowDialog()처럼 스레드를 차단하지 않습니다. 즉, 사용자 정의 컨트롤이 MainWindow에 포함될 때 주 화면으로 돌아갈 수 있습니다. 이 :

// Invoke foo control into placeholder 
if (!ShowFooControl()) 
{ 
// TODO A: if control's result return false 
FooA(); 
} 

// TODO B:just call after foo control closed 
FooB(); 

return true; 

FooB()는 Foo Control이 닫힌 후에 만 ​​호출됩니다.

FooA()는 Foo Control이 닫히고 DialogResult = false 인 경우에만 호출됩니다.

제 경우에 Window.ShowDialog를 시뮬레이트하려면 어떻게해야합니까?

감사합니다.

+0

현재 사용자 컨트롤을 제외하고 모든 것을 차단 하시겠습니까? 해당 사용자가 다른 창에서 제어합니까? – Master117

+0

나는 당신이 무엇을하는지에 대한 이해가 정말 어려웠다. 내가 이해 한 것에서 사용자 행동에 대해 생각하는 몇 가지 컨트롤을 보여주는 창을 가지고있다. 그러면 나머지 창을 보여주는 컨트롤이 고정되어 있다면, 적절한보기 모델을 사용하여 컨트롤의 IsEnabled 속성을 사용하여 컨트롤이 표시 될 때 나머지 컨트롤의 IsEnabled 속성이 false로 설정되도록합니다. –

+0

안녕하세요 @ Master117 넵, 그게 내가 원하는 : 현재 UserControl을 제외하고 다른 메인 윈도우를 호출하는 것을 차단하십시오. 감사합니다 –

답변

0

좋아, 내가 원하는 답변을 얻는 가장 좋은 방법은 내 첫 번째 대답에서 말한 내용입니다. 그 의미를 설명하기 위해 작은 WPF 응용 프로그램을 샘플로 만들었습니다. 내 응용 프로그램에 주 윈도우가 있고 3 명의 다른 사용자가 일부 기능과 닫기 버튼으로 각각을 제어합니다. 주 창에서 창 안에 컨트롤을 만들고 표시하는 세 개의 단추를 넣었으며 사용자 컨트롤이 표시 될 때 다른 컨트롤을 잠그고 사용자 컨트롤이 닫힌 후에 모든 컨트롤을 활성화하는 부울 속성을 창에 설정했습니다. 다음 링크를 사용하여 샘플을 다운로드 할 수 있습니다. http://blogs.dotnetwork.it/sabrina/download/SampleCode/DisableControls.zip

관련 문제