Повторное создание такого окна - это не совсем то, как я бы поступил в таких вещах.
Я бы использовал что-то более похожее на подход в этом примере:
https://gallery.technet.microsoft.com/ThWPPFPolishing-Chrome-f41be7fe
Готовое причудливое окно: ![введите здесь описание изображения](https://i.stack.imgur.com/MhhEf .png)
Window6, используя стиль WindowChrome, который находится в словаре ресурсов Dictionary1.
У которого есть что-то вроде большой круглой кнопки закрытия. Но чтобы дать вам представление перед загрузкой:
<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>
I gave your style a go.
Простое использование его неявно не имело никакого эффекта.
Я поместил его в 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>
And then I applied that to mainwindow
<Window
...
Title="MainWindow"
Style="{StaticResource roundedWindowStyle}"
Нажмите f5... и вроде работает. Хорошо.
Если вы проигнорируете этот хром окна, это означает, что оно не может работать так, как вы, кажется, намереваетесь.
![введите здесь описание изображения](https://i.stack.imgur.com/Rdmyc.png)
Вместо этого вам, вероятно, следует взглянуть на использование оконного хрома.
С тем, что у вас есть.
Как минимум, вам нужен Contentpresenter внутри этой сетки. Потому что окно — это элемент управления содержимым, но оно вообще не будет отображать содержимое, если в шаблоне нет презентатора содержимого.
person
Andy
schedule
09.03.2019