Повторное создание шаблона для такого окна - не совсем то, чем я бы хотел заниматься.
Я бы использовал нечто более похожее на подход в этом примере:
https://gallery.technet.microsoft.com/ThWPFPolishing-Chrome-f41be7fe
Готовое причудливое окно -
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 ..и это вроде работает.Хорошо.
Если вы игнорируете этот хром окна, значит, он не может работать так, как вы, похоже, намереваетесь.
Вы, вероятно, должны бытьвместо этого рассмотрим использование окна Chrome.
С тем, что у вас есть.
При абсолютном минимуме вам нужен Contentpresenter внутри этой сетки.Поскольку окно является элементом управления контентом, но оно вообще не будет отображаться, если в шаблоне нет содержимого, представленного в нем.