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