WPF WindowStartupLocation="CenterOwner"는 실제로 중앙에 있지 않고 전체적으로 팝업됩니다. 이유는 무엇입니까?
자, 이 질문과 이 질문은 비슷하지만 효과적인 답은 없습니다.사실 저는 Windows StartupLocation=CenterOwner가 작동하기를 바랬지만 작동하지 않습니다.새 창을 주 창 중앙이 아닌 그리드 열 중앙에 배치하는 것 같습니다.그래서 저는 그것이 부모라고 생각한다고 생각합니다.두 번째 대화 상자를 닫았다가 다시 열 때 대화 상자는 중심이 아니라 이전 위치에서 오른쪽 아래로 이동합니다.메인 창을 두 번째 모니터로 이동해도 팝업이 기본 모니터에서 계속 열립니다.이 속성들이 잘못된 것입니까, 아니면 단지 다른 방식으로 작동해야 한다고 생각하는 것입니까?상단 및 왼쪽 속성을 수동으로 계산할 수 있을 것 같습니다.저는 팝업이 어디에 있든 메인 창에 집중되기를 원합니다.
소유자를 설정하지 않았기 때문일 수 있습니다.
this.Owner = App.MainWindow; // for example
제가 그렇게 하는 것이고 항상 창문의 중심을 완벽하게 잡아줍니다.
Will Eddins가 언급한 내용을 확장하려면 창에서 ShowDialog() 또는 Show()에 대한 오버로드 방법을 만들 수 있습니다.
public void ShowDialog(Window owner)
{
this.Owner = owner;
this.ShowDialog();
}
public void Show(Window owner)
{
this.Owner = owner;
this.Show();
}
또는 생성자를 오버로드합니다.
public MyWindow(Window owner)
: this()
{
this.Owner = owner;
}
이에 대한 확장을 생성하면 다음과 같은 훌륭한 아이디어를 재사용할 수 있습니다.
/// <summary>
/// Opens a window modally, with an owner
/// </summary>
/// <param name="window">The window to open</param>
/// <param name="opener">The owner of the window getting opened</param>
/// <returns>window.ShowDialog()</returns>
public static bool? ShowDialog(this Window window, Window opener)
{
window.Owner = opener;
return window.ShowDialog();
}
또한 다음을 사용할 수 있습니다.
this.Owner = App.Current.MainWindow;
또는Application
대신에App
.
하위 창 생성자에 배치합니다.
public partial class ChildWindow : Window
{
public ChildWindow()
{
InitializeComponent();
DataContext = new ChildWindowViewModel();
this.Owner = App.Current.MainWindow;
}
}
저도 같은 문제가 있었어요하지만 그것은 대부분 제가 어린이 창문을 없애고 싶을 때, 제가 사용했다는 사실 때문이었습니다.hide()
대신에close()
다시 열 때 숨어서 닫히지 않았기 때문에 상위 창을 이동해도 시작 위치에서 계속 열립니다.
따라서 하위 창을 닫을 때(예: 작업이 완료되었을 때) 숨김 대신 닫힙니다.
이것을 야기할 수 있는 다른 무언가가 설정되어 있습니다.DataContext
끝나고InitializeComponent()
이 호출됩니다.
다음과 같은 코드백이 있는 경우:
public CustomWindow(CustomViewModel viewModel)
{
InitializeComponent();
DataContext = viewModel;
}
다음으로 변경:
public CustomWindow(CustomViewModel viewModel)
{
DataContext = viewModel;
InitializeComponent();
}
언급URL : https://stackoverflow.com/questions/3452854/wpf-windowstartuplocation-centerowner-not-really-center-and-pops-all-over-wh
'sourcetip' 카테고리의 다른 글
Windows 명령줄에 주석을 달려면 어떻게 해야 합니까? (0) | 2023.04.28 |
---|---|
목표-C: 파일을 한 줄씩 읽기 (0) | 2023.04.28 |
일시적으로 Eclipse 플러그인 사용 안 함 (0) | 2023.04.28 |
웹이란 무엇입니까?debug.config 및 Web.풀어주다.구성 파일: (0) | 2023.04.28 |
특정 Git 분기를 복제하려면 어떻게 해야 합니까? (0) | 2023.04.28 |