wpf WPF如何获得最大化/最小化按钮图标 - 自定义标题栏
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/32022761/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
WPF how to get maximize/minimize button icon - Custom title bar
提问by Le General de Cuddles
I'm trying to create a custom title bar for my application. I have no idea how to add a the windows maximize or minimize icon to the button. I want my icons o look similar to this
我正在尝试为我的应用程序创建自定义标题栏。我不知道如何向按钮添加窗口最大化或最小化图标。我希望我的图标看起来像这样
Here is my XAML for my buttons
这是我的按钮的 XAML
<Button Command="{x:Static SystemCommands.MaximizeWindowCommand}" Content="+" Canvas.Left="1020" Height="30" Width="30">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Black"/>
<Setter Property="TextBlock.Foreground" Value="White"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#403c47"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button Command="{x:Static SystemCommands.MinimizeWindowCommand}" Content="" Canvas.Left="990" Height="30" Width="30" >
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Black"/>
<Setter Property="TextBlock.Foreground" Value="White"/>
<Setter Property="FontSize" Value="24"/>
<Setter Property="TextBlock.LineHeight" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#403c47"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Any assistance is appreciated :)
任何帮助表示赞赏:)
回答by Xilmiki
This an extract of code i have used. (in my case is a reusable Window class extension, too long to post entirely)
这是我使用过的代码摘录。(在我的例子中是一个可重用的 Window 类扩展,太长而无法完全发布)
XAML 2 button minimize and maximize
XAML 2 按钮最小化和最大化
<Grid Margin="1,0,1,0">
<Button x:Name="Restore" Command="{Binding Source={x:Static SystemCommands.RestoreWindowCommand}}" Visibility="Collapsed" Style="{StaticResource WindowButtonStyle}">
<Grid Width="30" Height="25" UseLayoutRounding="True" RenderTransform="1,0,0,1,.5,.5">
<Path Data="M2,0 L8,0 L8,6 M0,3 L6,3 M0,2 L6,2 L6,8 L0,8 Z" Width="8" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center"
Stroke="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}, Mode=FindAncestor}}" StrokeThickness="1" />
</Grid>
</Button>
<Button x:Name="Maximize" Command="{Binding Source={x:Static SystemCommands.MaximizeWindowCommand}}" Style="{StaticResource WindowButtonStyle}">
<Grid Width="31" Height="25">
<Path Data="M0,1 L9,1 L9,8 L0,8 Z" Width="9" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center"
Stroke="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type Button}, Mode=FindAncestor}}" StrokeThickness="2" />
</Grid>
</Button>
</Grid>
Trigger to hide minimize/maximize button when window is maximized/minimized
当窗口最大化/最小化时触发隐藏最小化/最大化按钮
<ControlTemplate.Triggers>
<Trigger Property="WindowState" Value="Maximized">
<Setter TargetName="Maximize" Property="Visibility" Value="Collapsed" />
<Setter TargetName="Restore" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="WindowState" Value="Normal">
<Setter TargetName="Maximize" Property="Visibility" Value="Visible" />
<Setter TargetName="Restore" Property="Visibility" Value="Collapsed" />
</Trigger>
.....
</ControlTemplate.Triggers>
Hope can adapt to your needs.
希望能适应您的需求。
回答by George Helyar
An alternative solution is to use the Webdingsfont, which has minimise, maximise and restore glyphs on 0, 1 and 2 respectively.
另一种解决方案是使用Webdings字体,它分别在 0、1 和 2 上具有最小化、最大化和恢复字形。
There are also unicode characters for these e.g. but they are relatively recent and don't currently seem to work correctly in all locales.


