创建自定义WPF窗口样式

时间:2017-09-20 11:09:59

标签: c# wpf window

我需要创建一个具有以下属性和行为的窗口:

  • 窗口的外部大小调整边框:

    Animation of border behavior

  • 有阴影(自定义,非标准)

  • Standart Windows最小化/恢复动画
  • 自定义窗口模板

让我们按顺序进行。

我可以为创建窗口阴影设置WindowChrome.ResizeBorderThickness属性,但它不能正常工作 - WindowChrome.ResizeBorderThickness在可见窗口的边缘设置阴影 - 它需要在国外"窗户。

如果我创建窗口AllowsTransparency(因此,WindowStyle必须设置为None),它将不支持标准的最小化/恢复动画。

如果使窗口透明 - 可以调整外部大小边框:)

有了这一切,我需要我自己的窗户 - 框架,按钮,边框。我重新定义了这个模板(给你一个实验基础):

<Style TargetType="{x:Type Window}">
<Setter Property="ResizeMode" Value="CanResize"/>
<Setter Property="WindowChrome.WindowChrome">
    <Setter.Value>
        <WindowChrome NonClientFrameEdges="None" CornerRadius="0" GlassFrameThickness="0" ResizeBorderThickness="5" CaptionHeight="30"/>
    </Setter.Value>
</Setter>
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type Window}">
            <Border BorderThickness="1" BorderBrush="DarkGray" Background="#F0F0F0">
                <Grid>

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

                    <!-- TitleBar -->
                    <Border Background="White" Grid.Row="0"/>

                    <!-- Window content -->
                    <AdornerDecorator Grid.Row="1">
                        <ContentPresenter/>
                    </AdornerDecorator>
                </Grid>
            </Border>
        </ControlTemplate>
    </Setter.Value>
</Setter>

0 个答案:

没有答案