gpt4 book ai didi

wpf - 使用 WindowChrome 在 WPF 窗口上显示默认窗口按钮

转载 作者:行者123 更新时间:2023-12-04 17:43:51 25 4
gpt4 key购买 nike

我发现在 WPF 窗口上使用 WindowChrome 可以让我把内容放在窗口中我想要的任何地方,这是一个很好的想法。现在我终于可以让标题栏与我的应用程序的其余部分具有相同的颜色。

但是,我仍然喜欢出现在非样式窗口上的默认最小化/最大化/关闭按钮。

有什么方法可以使用 WindowChrome 设置我的 Window 样式,但仍保留默认按钮?

<Style x:Key="MainWindow" TargetType="{x:Type Window}">
<Setter Property="WindowChrome.WindowChrome">
<Setter.Value>
<WindowChrome CaptionHeight="30" ResizeBorderThickness="5" />
</Setter.Value>
</Setter>
</Style>

<Window Style="{StaticResource MainWindow}">
<Grid Background="Black">
<MyContent />
</Grid>
</Window>

这会形成一个大的黑色窗口(很棒!)但没有任何最小/最大/关闭按钮,因为它们隐藏在 Grid 后面。 (不太好)。不过,这些按钮仍然是可点击的,所以它们显然就在那里。

最佳答案

Is there any way I can style my Window using WindowChrome yet still preserve the default buttons?



不,我不这么认为。您可以设置 GlassFrameThickness属性(property)到 0禁用按钮,然后你将不得不创建自己的自定义按钮。您可以引用以下项目的一些示例: https://wpfwindow.codeplex.com/ .

如果你想要 Window 10 风格的标题按钮,你可以使用 Segoe MDL2 Assets字体系列:
<Style x:Key="CaptionButtonStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="LayoutRoot" Background="Transparent" Width="44" Height="30">
<TextBlock x:Name="txt" Text="{TemplateBinding Content}" FontFamily="Segoe MDL2 Assets" FontSize="10"
Foreground="#999999" HorizontalAlignment="Center" VerticalAlignment="Center"
RenderOptions.ClearTypeHint="Auto" TextOptions.TextRenderingMode="Aliased" TextOptions.TextFormattingMode="Display"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="LayoutRoot" Property="Background" Value="#E5E5E5"/>
<Setter TargetName="txt" Property="Foreground" Value="#000000"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

<Style x:Key="MinimizeButtonStyle" TargetType="Button" BasedOn="{StaticResource CaptionButtonStyle}">
<Setter Property="Content" Value="&#xE949;"/>
</Style>

<Style x:Key="MaximizeButtonStyle" TargetType="Button" BasedOn="{StaticResource CaptionButtonStyle}">
<Setter Property="Content" Value="&#xE739;"/>
</Style>

<Style x:Key="RestoreButtonStyle" TargetType="Button" BasedOn="{StaticResource CaptionButtonStyle}">
<Setter Property="Content" Value="&#xE923;"/>
</Style>

关于wpf - 使用 WindowChrome 在 WPF 窗口上显示默认窗口按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44190041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com