如何将样式应用于所有ItemsControl元素中存在的所有TextBlock和TextBox元素?

时间:2012-04-18 16:04:36

标签: wpf xaml

我需要为TextBlock元素中存在的所有TextBoxItemsControl定义全局样式。

我需要所有TextBlock元素的宽度为100且左对齐,TextBox元素的宽度为50且要右对齐。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

我不明白你的“存在于ItemsControl元素中”但是如果你在谈论你的ItemsTemplate它应该像这样工作

<Style x:Key="myTextBoxStyle">
    <Setter Property="Width" Value="50"/>
    <Setter Property="HorizontalAlignment" Value="Right"/>
</Style>

<Style x:Key="myTextBlockStyle">
    <Setter Property="Width" Value="100"/>
    <Setter Property="HorizontalAlignment" Value="Left"/>
</Style>

<ItemsControl>
    <ItemsControl.ItemsTemplate>
        <DataTemplate>
            <Grid>
                <TextBlock Style="{StaticResource myTextBlockStyle}"/>
                <TextBox Style="{StaticResource myTextBoxStyle}"/>
            <Grid>
        <DataTemplate>
    </ItemsControl.ItemsTemplate>
</ItemsControl>

这将显示ItemsControl中的所有项目,文本框使用myTextBoxStyle,文本块使用myTextBlockStyle。

答案 1 :(得分:2)

你也可以在ItemsControl.Resources中声明样式

        <ItemsControl ItemsSource="{Binding Persons}">
        <ItemsControl.Resources>
            <Style x:Key="TxtBlk1" TargetType="{x:Type TextBlock}">
                <Setter Property="Foreground"  Value="red"/>
                <Setter Property="FontSize" Value="56"/>
                <Setter Property="HorizontalAlignment" Value="Right"/>
            </Style>

        </ItemsControl.Resources>
        <ItemsControl.ItemTemplate>

            <DataTemplate>
                <TextBlock Text="{Binding Name}" Style="{StaticResource TxtBlk1}"></TextBlock>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>