2012-04-18 3 views
0

Мне нужно определить глобальный стиль для всех TextBlock и TextBox, которые есть в пределах ItemsControl элементов.Как применить стиль ко всем элементам TextBlock и TextBox, которые существуют во всех элементах ItemsControl?

Мне нужно, чтобы все элементы TextBlock имели ширину 100 и левые, а элементы TextBox имели ширину 50 и выравнивались по правому краю.

Как я могу это достичь?

ответ

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.

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> 
Смежные вопросы