Button
我在我的 XAML 中有一个样式设置,用于在我的 WPF 窗口中创建圆角。我希望这种样式适用于我的应用程序中所有窗口上的所有按钮。
有没有一种类似于 CSS 的方法,可以将它放入另一个文件并在我的所有窗口中以某种方式引用它?还是我每次都需要复制粘贴。
如果你想以一种干净的方式来做,你可以创建一个ResourceDictionary.xaml
,它与CSS
网页设计中的功能相同。
首先,转到您的项目并添加一个ResourceDictionary
. 在其中,您可以为所需的所有元素添加样式,例如,更改Button
适用于所有按钮的 a 的颜色背景:
// Base style for all buttons
<Style TargetType="Button">
<Setter Property="Background" Value="Red" />
</Style>
如果您没有在 each 上指定标识符Style
,则该样式将应用于与
TargetType
您指定的匹配的所有控件。如果您希望按钮看起来不同,您可以执行与上述相同的操作,但还包括该样式的标识符,每个不同的按钮将使用该标识符:
// Specific style for blue buttons
<Style TargetType="Button" x:Key="BlueButton">
<Setter Property="Background" Value="Blue" />
</Style>
然后,在.xaml
您希望应用样式的每一个上,您都必须添加对ResourceDictionary.xaml
您正在创建的 this 的引用:
<Window.... >
<Window.References>
<ResourceDictionary>
<ResourceDictionary Source="MyResourceDictionary.xaml" />
</ResourceDictionary>
</Window.References>
<Grid>
<Button Content="Button with red background" />
<Button Style="{StaticResource BlueButton}" Content="Button with blue background" />
</Grid>
</Window>
我想这就是你要找的。
如果要绘制圆形按钮,则需要覆盖Template
按钮的属性。这意味着从您覆盖它的那一刻起,您需要告诉按钮他需要执行的每个操作。见这里。所以,在一个小而简化的概念中,你想写这样的东西:
<Style TargetType="Button">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Background" Value="DarkBlue" />
<Setter Property="Width" Value="150" />
<Setter Property="Height" Value="35" />
<Setter Property="FontSize" Value="16" />
<Setter Property="FontFamily" Value="Calibri" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}"
BorderBrush="LightBlue" BorderThickness="1" CornerRadius="15,0,15,0" x:Name="bd">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="bd" Property="Background" Value="LightGray"/>
<Setter Property="Foreground" Value="White" />
<Setter Property="Cursor" Value="Hand" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
看到这里我覆盖了绘制基本功能按钮所需的所有基本属性,如Foreground
, Background
, Width
... 和MouseOver
事件,以在将鼠标移过它时更改颜色。内部的CornerRadius
属性是您正在寻找的半径。Border
ControlTemplate
因此,基本上,您将覆盖所有按钮默认提供的边框属性。
您可以使用应用程序资源来做到这一点。
例如,这里有一些代码(在 app.xaml 中)
<Application.Resources>
<Style TargetType="Button" x:Key="GelButton" >
<Setter Property="Margin" Value="1,2,1,2"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
</Style>
</Application.Resources>
然后,对于您的按钮(例如):
<Button Height="50" Width="250" Style="{StaticResource GelButton}" Content="Button 1" />
<Button Height="50" Width="250" Style="{StaticResource GelButton}" Content="Button 2" />
希望这将帮助您找到您正在寻找的东西。
谷歌参考词典。你可以把你所有的风格都放在那里。然后,只需在您的窗口/用户控件中添加一个“引用”即可。
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/SialTPChat.UI.Design;component/Styles/Styles.xaml" />
</ResourceDictionary>
</UserControl.Resources>
现在,上面引用的 XAML 文件中的所有样式都将应用于用户控件中的所有对象。
根据我的最简单的方法是:
右键单击设计表面中的按钮
选择编辑模板->编辑副本
选择“在应用程序中定义”单选按钮
样式将在 App.xaml 文件中创建
使用“样式”标签将该资源添加到每个按钮