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样式?

WPF中的全局样式

根据这个问题的答案:使用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>