我需要创建一个具有以下属性和行为的窗口:
窗口的外部大小调整边框:
有阴影(自定义,非标准)
让我们按顺序进行。
我可以为创建窗口阴影设置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>