wpf 做一个好看的标题栏?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf 做一个好看的标题栏?相关的知识,希望对你有一定的参考价值。
如图一是最终效果,想做个和图中一样的标题,怎么实现呢?最好能给直接能用的代码,用样式实现,不要贴图,谢谢
在 WPF 中,您可以使用自定义模板(Template)来创建一个好看的标题栏。以下是一个简单的示例,演示如何创建一个具有渐变背景和自定义按钮的标题栏:
<Window x:Class="MyWindow"
Title="My Window"
WindowStyle="None"
AllowsTransparency="True"
Background="Transparent">
<Window.Template>
<ControlTemplate TargetType="x:Type Window">
<Border BorderThickness="1"
BorderBrush="Gray"
CornerRadius="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border Grid.Row="0"
Background="#FF7F7F7F">
<StackPanel Orientation="Horizontal">
<TextBlock Text="TemplateBinding Title"
Margin="5,0,0,0"
VerticalAlignment="Center"
FontSize="14" />
<StackPanel Orientation="Horizontal"
Margin="5,0,0,0">
<Button Content="⚙"
Width="20"
Height="20"
Margin="5,0,0,0"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Background="#FF7F7F7F"
BorderThickness="0"
Foreground="White"
FontSize="14"
ToolTip="Settings" />
<Button Content="❐"
Width="20"
Height="20"
Margin="5,0,0,0"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Background="#FF7F7F7F"
BorderThickness="0"
Foreground="White"
FontSize="14"
ToolTip="Minimize"
Click="MinimizeButton_Click" />
<Button Content="❌"
Width="20"
Height="20"
Margin="5,0,0,0"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Background="#FF7F7F7F"
BorderThickness="0"
Foreground="White"
FontSize="14"
ToolTip="Close"
Click="CloseButton_Click" />
</StackPanel>
</StackPanel>
</Border>
<Border Grid.Row="1"
Background="White">
<ContentPresenter />
</Border>
</Grid>
</Border>
</ControlTemplate>
</Window.Template>
</Window>
这个示例中,我们创建了一个 ControlTemplate,并将它的 TargetType 设置为 Window,然后在模板中定义了一个 Border,作为整个窗口的容器。然后,我们将 Grid 放置在 Border 中,以便我们可以将窗口分成两个部分:标题栏和内容部分。在标题栏中,我们使用了一个 StackPanel,其中包含一个 TextBlock 和三个 Button,用于显示窗口的标题、设置按钮、最小化按钮和关闭按钮。
我们使用了许多属性来定制标题栏的外观,包括颜色、大小、边框、字体大小等等。您可以根据自己的需要进行更改和修改。
参考技术A 您可以使用WPF中的Style来实现自定义标题栏。以下是一个简单的例子,使用了LinearGradientBrush和DropShadowEffect来实现深蓝色标题和阴影效果:<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Style>
<Style TargetType="x:Type Window">
<Setter Property="WindowChrome.WindowChrome">
<Setter.Value>
<WindowChrome CaptionHeight="30"
CornerRadius="0"
GlassFrameThickness="0"
NonClientFrameEdges="None"
ResizeBorderThickness="5"
UseAeroCaptionButtons="False" />
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="x:Type Window">
<Border Background="#2E5C87">
<Border.Effect>
<DropShadowEffect BlurRadius="5"
ShadowDepth="0"
Opacity="0.8" />
</Border.Effect>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="#1C3E5E" />
<ContentPresenter Grid.Row="1" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Style>
<Grid>
<TextBlock Text="Hello, world!" />
</Grid>
</Window>
您可以根据自己的需求修改样式中的属性值,例如CaptionHeight、CornerRadius、Background等等。同时,您也可以在标题栏上添加按钮或其他控件,以实现更多的功能。 参考技术B blend 画啊 参考技术C 要做一个好看的WPF标题栏,可以考虑以下几个方面:
1. 使用自定义样式:WPF提供了许多控件的默认样式,但是这些样式可能不符合我们的需求。可以通过自定义样式来实现自己想要的效果。
2. 使用模板:WPF中的模板可以让我们完全控制控件的外观和行为。可以使用模板来自定义标题栏的样式。
3. 使用图标和背景:可以在标题栏中添加图标和背景,使其更加美观。
4. 使用动画效果:可以使用动画效果来增加标题栏的交互性和视觉效果。
5. 使用字体和颜色:可以使用不同的字体和颜色来增加标题栏的可读性和美观度。
6. 考虑不同的状态:在设计标题栏时,需要考虑不同的状态,如激活状态、非激活状态、最大化状态等,以确保标题栏在不同的情况下都能够呈现出最佳的效果。
[原创]c# wpf自定义 任意颜色阴影特效融合winform的探索之路
参考技术A 现在的需求需要高度定制,根据动态的配置生成动态的界面,所以网上一般的方式都是无法解决问题的。比如直接wpf控件拉进去使用的方式。网上的资料太少,都是基于xml布局
做了一半项目发现winform没法实现阴影,结果发现wpf可以设置局部阴影,设置改变阴影颜色。
操作步骤,创建wpf用户控件,然后动态的添加到winform然后,插入一个画版 画板除了可以直接添加按钮外还可以添加一个矩形等等。
实现的效果如下
这里除了红色部分,其他地方全是通过 winform实现的。
以上是关于wpf 做一个好看的标题栏?的主要内容,如果未能解决你的问题,请参考以下文章