C# 将默认值向下传播到元素树的功能不起作用

C# 将默认值向下传播到元素树的功能不起作用,c#,wpf,C#,Wpf,当我试图为所有控件设置字体大小时,我的简单应用程序窗口出现了一个奇怪的问题。有些控件从父窗口继承字体大小,而另一个菜单、状态栏则不继承。 我希望为窗口设置FontSize属性值将沿着元素树向下传播。但对于某些控件,它不起作用 为什么??有什么解释吗?我的代码有错误吗 注意:没有代码隐藏 MainWindow.xaml 在下面的图片上,菜单和状态栏不是继承的 字体大小: 一些WPF控件(如菜单和状态栏)以默认样式显式设置FontSize属性 这就是为什么继承正在被打破 如果显式设置属性,它将不会继

当我试图为所有控件设置字体大小时,我的简单应用程序窗口出现了一个奇怪的问题。有些控件从父窗口继承字体大小,而另一个菜单、状态栏则不继承。 我希望为窗口设置FontSize属性值将沿着元素树向下传播。但对于某些控件,它不起作用

为什么??有什么解释吗?我的代码有错误吗

注意:没有代码隐藏

MainWindow.xaml

在下面的图片上,菜单和状态栏不是继承的 字体大小:

一些WPF控件(如菜单和状态栏)以默认样式显式设置FontSize属性

这就是为什么继承正在被打破

如果显式设置属性,它将不会继承值


唯一的解决方法是覆盖默认样式。

这是否回答了您的问题@帕维尔·阿尼霍斯基——事实上,不是。我知道这种方法。但是我想理解为什么父母设置了一个属性,但是拥有相同属性的孩子不会继承它,尽管它不会重新定义它。我不希望创建上百种新样式,而是希望使用现有的WPF机制来继承属性。更改已定义类型的样式的缺点是它将触及树的所有元素。我只想更改元素树的一部分属性。非常感谢。
<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="340" Width="300"
        FontSize="24" >

    <StackPanel>
        <Label Content="Hello! " />
        <Menu DockPanel.Dock="Top" Margin="10">
            <MenuItem Header="File"/>
            <MenuItem Header="Edit"/>
            <MenuItem Header="View"/>
            <MenuItem Header="Help"/>
        </Menu>
        <ListBox Margin="10">
            <ListBoxItem>Chapter 1</ListBoxItem>
            <ListBoxItem>Chapter 2</ListBoxItem>
        </ListBox>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
            <Button Margin="5" Padding="5" Content="Help"/>
            <Button Margin="5" Padding="5" Content="OK" />
        </StackPanel>
        <StatusBar Margin="10">
            <Label>Status Bar</Label>
            <Separator/>
            <Label>Zoom</Label>
            <ComboBox SelectedIndex="0">
                <ComboBoxItem>100%</ComboBoxItem>
                <ComboBoxItem>75%</ComboBoxItem>
                <ComboBoxItem>50%</ComboBoxItem>
                <ComboBoxItem>25%</ComboBoxItem>
            </ComboBox>
        </StatusBar>
    </StackPanel>
</Window>
<Style x:Key="{x:Type Menu}" TargetType="{x:Type Menu}">
    ...
    <Setter Property="FontSize"
        Value="{DynamicResource {x:Static SystemFonts.MenuFontSizeKey}}"/>
    ...
</Style>