我需要为TextBlock
元素中存在的所有TextBox
和ItemsControl
定义全局样式。
我需要所有TextBlock
元素的宽度为100且左对齐,TextBox
元素的宽度为50且要右对齐。
我怎样才能做到这一点?
答案 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>