全局风格不适用于WPF

时间:2014-03-27 15:46:55

标签: c# wpf

为什么这个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>

2 个答案:

答案 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>