WindowChrome을 사용하여 창에서 크기 조정 그립을 사용하는 방법

4958 단어 XamlWPF

전치



일반 창에서 크기 조정 그립을 활성화하려면 Window.ResizeMode 속성에 CanResizeWithGrip를 설정하면 활성화됩니다.


※예 Visual Studio 2013의 리사이즈 그립

하지만 (멋지게 틀이 없는 창을 만들기 위해서) WhindowChrome 를 사용했을 경우, 단지 리사이즈 그립이 표시되는 것만으로, 드래그해도 윈도우 사이즈를 변경할 수 없습니다.


※리사이즈할 수 없다

해결 방법



이 문제를 해결하려면 WindowChrome.ResizeGripDirection 첨부 속성을 사용합니다.
놀랍게도이 속성이 첨부 된 컨트롤은 크기 조정 그립이됩니다!
(게다가 최대화 상태에서는 무효가 되는 친절 설계)

일반적인 리사이즈 그립을 재현하려면 오른쪽 하단에 배치한 컨트롤에 WindowChrome.ResizeGripDirection="BottomRight" 를 설정하는 것이 좋습니다.

샘플 코드는 이런 느낌입니다.
<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        WindowStyle="None"
        Title="MainWindow" Height="350" Width="525">

    <WindowChrome.WindowChrome>
        <WindowChrome ResizeBorderThickness="1"
                      CaptionHeight="40"/>
    </WindowChrome.WindowChrome>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Grid Grid.Row="1"
              Background="LightGray">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>

            <TextBlock Grid.Column="1"
                       WindowChrome.ResizeGripDirection="BottomRight"
                       Background="BlueViolet"
                       Foreground="White"
                       Padding="5"
                       VerticalAlignment="Center"
                       Text="右下"/>
        </Grid>
    </Grid>
</Window>

이것만으로 "오른쪽 아래"라고 표시된 TextBlock이 리사이즈 그립으로 행동합니다. 코드 비하인드도 없어 매우 간단합니다.
만약 이 TextBlock 어느 한가운데에 배치되어 있어도 WindowChrome.ResizeGripDirection="BottomRight" 가 설정되어 있으면 우하의 그립 핸들로서 행동합니다.

이렇게하면 이렇게됩니다.


참고



WindowChrome.ResizeGripDirection 연결된 속성

ResizeGripDirection 열거형

좋은 웹페이지 즐겨찾기