2010-03-17 4 views
11

내 WPF 응용 프로그램의 Splashscreen/Loading-Window가 Topmost = "True"으로 설정되었습니다. 이제이 창은 다른 응용 프로그램으로 전환 할 때도 다른 창 상단에 있습니다 (로드하는 데 시간이 걸리기 때문입니다). 나는 이런 종류의 행동을 원하지 않는다.WPF-Window 최상위 애플리케이션 전용?

Topmost = "False"으로 설정하면 윈도우가 맨 위에 있지 않습니다. 그러나 다른 응용 프로그램과 작업 한 후 내 응용 프로그램으로 다시 전환하면 고객이 때때로 Loading-Windows가 작동 중임을 인식하지 못합니다. 백그라운드의 Loading-Window가 여전히 활성 창이고 모달이기 때문에 응용 프로그램이 응답하지 않는 것처럼 보입니다.

내 응용 프로그램이 포 그라운드에있는 경우에만로드 윈도우를 최상위로 유지하려고합니다. 다른 프로그램으로 전환하면 윈도우가 사라지고 다시 전환 할 때 최상위로 다시 나타납니다.

+0

왜 스플래시 화면이 표시되는 동안 다른 창을 모두로드하는 중입니까? 일반적으로 응용 프로그램이 스플래시 화면을 사용하는 경우 그 시간에 해당 응용 프로그램의 유일한 표시 창입니다. – BFree

+0

로딩 시간이 오래 걸리므로 내 보스는 일부 데이터가 기본 창에 이미 표시되기를 원합니다. 데이터와 상호 작용할 수는 없지만 최소한보아야합니다. – TalkingCode

답변

10

스플래시 화면이 항상 다른 창과 겹치도록 창의 "소유자"속성을 사용해 볼 수 있습니다.

+0

내 응용 프로그램에서 MainWindow가 생성하는 데 시간이 걸리므로 스플래시 화면이 표시되는 동안 아직 만들어지지 않았습니다. 그래서 스플래시 화면 창 소유자를 주 창에 아직 설정할 수 없습니다. –

2

MainWindow의 로딩 패턴을 변경하면 도움이 될 수도 있습니다. 당신이 백그라운드 스레드에서 창을로드의 일부를 소비하는 시간을 넣을 수 있습니다 경우에 당신은이 경로 수행 할 수 있습니다

  1. 쇼를 MainWindow를 비어 있거나 베어 뼈 (등 빈 필드/그리드)에
  2. 시작 비동기로드 방법 데이터를 가져 와서 기본 창을 채우십시오.
  3. 스플래시 화면을 생성하고 소유자를 자기에게 설정하고 표시하십시오.
  4. 로드가 완료되면 스플래시 화면을 닫아야합니다.

로드가 처리되는 동안 스플래시가 계속 유지되어야합니다.