WPF中的全局样式
本文关键字:样式 全局 WPF | 更新日期: 2023-09-27 18:08:55
我正在学习如何在WPF中使用样式,根据我在网上找到的信息,如果我这样定义样式(目标类型):
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Black"/>
</Style>
</ResourceDictionary>
…这种样式将应用于我的应用程序中的所有按钮。然而,我的按钮似乎保持不变。在主窗口中,我将资源字典添加到资源集合中,并插入了几个按钮,但是我的按钮看起来总是一样的。下面是主窗口的代码:
<Window x:Class="MCTSTrainingChapter1.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.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="GridResources.xaml"/>
<ResourceDictionary Source="ButtonResources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<DockPanel >
<ToolBar DockPanel.Dock="Top" Height="26" Name="toolBar1" >
<Button x:Name="btnBold" Click="Button_Click">Bold</Button>
<Button Click="Button_Click_1">Italic</Button>
<Slider Name="slider1" Minimum="2" Maximum="72" Width="100" ValueChanged="slider1_ValueChanged"></Slider>
</ToolBar>
<Grid Name="grid1" Background="{StaticResource GridBackgroundBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0" Name="listBox1" SelectionChanged="listBox1_SelectionChanged" />
<GridSplitter Grid.Column="1" Margin="0" Width="5" HorizontalAlignment="Left"/>
<RichTextBox Grid.Column="2" Name="richTextBox1"/>
</Grid>
</DockPanel>
</Window>
为什么不应用Button样式?
根据这个问题的答案:使用Style设置工具栏按钮的大小
工具栏将自己的样式应用于按钮。该样式可以通过资源键ToolBar.ButtonStyleKey
访问。设置你的风格与该键,而不是仅仅针对Button
类型,你将设置:
<Style x:Key="{x:Static ToolBar.ButtonStyleKey}" TargetType="Button">
<Setter Property="Width" Value="100" />
</Style>
已经有一个涉及全局样式的答案,如果您想明确定义每个按钮的样式(可能在您的项目的未来),您将希望将样式命名为:
<Style x:Key="buttonStyleOne" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Black"/>
</Style>
,然后通过
应用到你想要使用样式的按钮上<Button Style="{DynamicResource buttonStyleOne}">Content!</Button>