programing

WPF 창의 시작 위치 변경

cafebook 2023. 4. 13. 21:08
반응형

WPF 창의 시작 위치 변경

화면 우측 상단에 WPF 창을 열고 싶습니다.

지금은 창을 열고 (user32.dll의 move window를 통해) 이동하면 됩니다.그러나 이 접근 방식은 창이 기본 위치에서 열리고 완전히 로드된 다음 오른쪽 상단으로 이동함을 의미합니다.

윈도우의 초기 위치와 크기를 지정할 수 있도록 변경하려면 어떻게 해야 합니까?

xaml에서 Window Startup Location, 높이, 폭, 왼쪽 및 위쪽을 설정하십시오.

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" 
    Height="500" Width="500"
    WindowStartupLocation="Manual" 
    Left="0" Top="0">
</Window>

사용하는 것을 좋아합니다.WindowStartupLocation="CenterOwner"(MSDN 문서)

다만, 다음과 같이, 발신자가 자신을 오너로서 지정할 필요가 있습니다.

new MyWindow() { Owner = this }.ShowDialog();

그런 다음 창 높이와 너비를 정의하십시오. 예:

<Window ...
     Height="400" Width="600"
     WindowStartupLocation="CenterOwner"
>
...

저를 좋아하는 사람들은 창의 위치를 현재 마우스 위치로 설정하고 싶을 때 다음과 같이 할 수 있습니다.

myWindow.WindowStartupLocation = WindowStartupLocation.Manual;
myWindow.Left = PointToScreen(Mouse.GetPosition(null)).X;
myWindow.Top = PointToScreen(Mouse.GetPosition(null)).Y;

Window에 대한 속성이 있습니다."WindowStartupLocation"속성 창에서 찾을 수 있습니다.생성자에서 Window를 선택한 다음 속성 목록으로 이동하기만 하면 됩니다.검색(Search(검색)"Startup"비슷하거나 비슷하면 그 특성을 찾을 수 있습니다.로 변경하다"CenterScreen"그러면 거래가 성사될 거야참고! 창 대신 그리드를 선택하지 않았는지 확인하십시오!그렇지 않으면 실패할 것이다.

아니면 XAML 편집을 통해서도 가능합니다.

다음과 같은 작업을 수행할 수 있었습니다(화면에 다른 위치가 표시됨).

<Window x:Class="BtnConfig.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:BtnConfig"
        mc:Ignorable="d"
        Title="MainWindow" Height="142.802" Width="448.089"
        Top="288" Left="0"> 
</Window>

다음 항목은 포함되지 않습니다.

WindowStartupLocation="Manual" 

내 경우 "검색" 도구 상자를 리치 텍스트 상자 컨트롤의 오른쪽 상단 모서리에 표시해야 합니다.

여기에 이미지 설명 입력

이 작업은 다음 코드로 수행합니다.

    // Assumes variable: RichTextBox m_Box, Window m_FindWordDialog
    m_FindWordDialog.Show( ); // Let dialog show itself first

    // Note: I had to use ActualWidth because m_Box.Width somehow is (NaN) in my case
    // Not tested in different DPI.
    Point locationFromScreen = m_Box.PointToScreen( new Point(m_Box.ActualWidth, 0) );
    m_FindWordDialog.Left = locationFromScreen.X - m_FindWordDialog.Width;
    m_FindWordDialog.Top = locationFromScreen.Y;

내 검색 창 XAML에는 다음과 같은 속성이 있습니다.

WindowStartupLocation="Manual" Left="0" Top="0"

초기 위치에 잠깐 나타나서 조금 뛰지만, 저는 견딜 수 있습니다.사실 어떤 값이라도 상관없습니다.WindowStartupLocation="CenterOwner"부모 중심에서 뛰어내릴 뿐이죠또는 수동 모드를 사용하여 멀리 떨어진 위치에서 시작하여 사용자에게 점프하는 모습을 보이지 않도록 할 수도 있습니다.

바탕화면 위치에 상대적으로 표시되도록 하려면 화면 작업영역 위치를 가져오면 다음을 확인할 수 있습니다.WPF 창의 위치를 데스크톱 오른쪽 아래 구석에 설정하는 방법

언급URL : https://stackoverflow.com/questions/1545258/changing-the-start-up-location-of-a-wpf-window

반응형