【发布时间】:2019-12-03 17:29:58
【问题描述】:
在我的简单应用程序窗口中尝试为其上的所有控件设置字体大小时,我遇到了一个奇怪的问题。一些控件从父窗口继承字体大小,而另一些(菜单、状态栏)则没有。 我希望为窗口设置 FontSize 属性值将沿元素树向下传播。但是对于某些控件,它不起作用。
为什么?对此有什么解释吗?我的代码有错误吗?
注意:后面没有代码。
MainWindow.xaml
<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>
上图下方的菜单和状态栏都没有继承 字体大小:
【问题讨论】:
-
这能回答你的问题吗? WPF global font size
-
@Pavel Anikhouski - 实际上,不是。我知道这种方法。但是我想明白为什么父母设置了一个属性,而一个拥有相同属性的孩子却没有继承它,尽管它没有重新定义它。我宁愿不要创建一百个新样式,而是使用现有的 WPF 机制来继承属性。