我需要为所有元素定义一个全局样式TextBlock
并且TextBox
存在于ItemsControl
元素中。
我需要所有TextBlock
元素的宽度为 100 并左对齐,TextBox
元素的宽度为 50 并右对齐。
我怎样才能做到这一点?
我不明白你的“存在于 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 的文本块。
您也可以在 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>