0

我需要为所有元素定义一个全局样式TextBlock并且TextBox存在于ItemsControl元素中。

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

我怎样才能做到这一点?

4

2 回答 2

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 的文本块。

于 2012-04-18T16:08:45.443 回答
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>
于 2012-04-18T17:38:50.550 回答