全局样式在WPF中不起作用
本文关键字:不起作用 WPF 样式 全局 | 更新日期: 2023-09-27 17:54:36
为什么这个样式不能在WPF中工作?TextBlock应该是红色的,但它不是。它一直是黑色的。这只是发生当TextBlock是在一个模板。
<Window x:Class="WpfApplication2.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>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"></Setter>
</Style>
</Window.Resources>
<Grid>
<ListView>
<ListView.Items>
<ListItem></ListItem>
</ListView.Items>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock>Hallo</TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Window>
模板中的隐式Styles
仅限于从System.Windows.Controls.Control
继承的控件,除非它们在Application.Resources
中定义,因此要么给您的样式x:Key
并显式地使用它:
<Window.Resources>
<Style TargetType="TextBlock" x:Key="myTextBlockStyle">
<Setter Property="Foreground" Value="Red"></Setter>
</Style>
</Window.Resources>
<TextBlock Style="{StaticResource myTextBlockStyle}">Hallo</TextBlock>
或移动到Application.Resources
<Application.Resources>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"></Setter>
</Style>
</Application.Resources>
如果你想定义一个样式,并让它自动应用于该类型的所有控件(不需要手动指定每个控件的样式),你需要这样定义它。
如
<Style x:Key="{x:Type TextBox}" TargetType="TextBox">
<Setter Property="IsUndoEnabled" Value="True"></Setter>
<Setter Property="UndoLimit" Value="10"></Setter>
<Setter Property="ContextMenu" Value="{StaticResource textContextMenu}"></Setter>
<Setter Property="SpellCheck.IsEnabled" Value="True"></Setter>
</Style>