为什么这个Style在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>
答案 0 :(得分:5)
模板中的隐式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>
答案 1 :(得分:-2)
如果要定义样式并将其自动应用于该类型的所有控件(无需手动指定每个控件的样式),则需要将其定义为此类型。
E.G。
<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>