Повторное создание шаблона для такого окна - не совсем то, чем я бы хотел заниматься.
Я бы использовал нечто более похожее на подход в этом примере:
https://gallery.technet.microsoft.com/ThWPFPolishing-Chrome-f41be7fe
Готовое причудливое окно - ![enter image description here](https://i.stack.imgur.com/MhhEf.png)
Window6, с использованием стилей WindowChrome, который находится в словаре ресурсов Dictionary1.
Имеет материал likaбольшая круглая кнопка закрытия.Но чтобы дать вам идею перед загрузкой:
<Style x:Key="FinishedWindow" TargetType="{x:Type Window}">
<Setter Property="FontFamily" Value="Comic Sans MS"/>
<Setter Property="Foreground" Value="{StaticResource DarkDark}"/>
<Setter Property="WindowChrome.WindowChrome">
<Setter.Value>
<WindowChrome CaptionHeight="0"
CornerRadius="20"
GlassFrameThickness="0"
NonClientFrameEdges="None"
ResizeBorderThickness="5"
/>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Grid>
<Border Background="{StaticResource BrightMid}" BorderBrush="{StaticResource DarkLight}" BorderThickness="4,4,6,6"
CornerRadius="12">
<Border.Effect>
<BlurEffect KernelType="Gaussian" Radius="12" RenderingBias="Quality" />
</Border.Effect>
</Border>
<Border BorderBrush="{StaticResource DarkDark}" BorderThickness="2"
CornerRadius="12" ClipToBounds="True">
</Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="32"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}"
Foreground="{StaticResource DarkDark}"
Grid.Row="0"
HorizontalAlignment="Center"
VerticalAlignment="Bottom"
FontWeight="Bold"
FontSize="16"
/>
<Button Name="CloseButton"
Width="20" Height="20"
Grid.Row="0"
HorizontalAlignment="Right"
BorderThickness="0"
Margin="0,12,12,0"
Command="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CloseCommand}"
Style="{StaticResource CloseButton}"/>
<ContentPresenter Grid.Row="1" Margin="12"/>
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
Я попробовал ваш стиль.
Простое использование его неявным образом не имело никакого эффекта.
Я положил его в app.xaml и дал ему ключ
<Application.Resources>
<Style TargetType="{x:Type Window}" x:Key="roundedWindowStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Grid>
<Border
x:Name="RoundMask"
CornerRadius="10"
Background="white"/>
<!-- The main content -->
<Grid>
<Grid.OpacityMask>
<VisualBrush Visual="{Binding ElementName=RoundMask}" />
</Grid.OpacityMask>
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
И затем применил это к главному окну
<Window
...
Title="MainWindow"
Style="{StaticResource roundedWindowStyle}"
Нажмите f5 ..и это вроде работает.Хорошо.
Если вы игнорируете этот хром окна, значит, он не может работать так, как вы, похоже, намереваетесь.
![enter image description here](https://i.stack.imgur.com/Rdmyc.png)
Вы, вероятно, должны бытьвместо этого рассмотрим использование окна Chrome.
С тем, что у вас есть.
При абсолютном минимуме вам нужен Contentpresenter внутри этой сетки.Поскольку окно является элементом управления контентом, но оно вообще не будет отображаться, если в шаблоне нет содержимого, представленного в нем.