2011-01-13 3 views
0

Я использую шаблон для моего флажком:WPF Multiline Text Aligniment в ContentPresenter

<Style x:Key="StyleCheckboxError" TargetType="{x:Type CheckBox}"> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
      <Setter Property="Background" Value="{StaticResource CheckBoxFillNormal}"/> 
      <Setter Property="BorderBrush" Value="{StaticResource CheckBoxStroke}"/> 
      <Setter Property="BorderThickness" Value="1"/> 
      <Setter Property="FocusVisualStyle" Value="{StaticResource EmptyCheckBoxFocusVisual}"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type CheckBox}"> 
         <Grid x:Name="IGridMain"> 
          <VisualStateManager.VisualStateGroups> 
           <VisualStateGroup x:Name="CheckStates"> 
            <VisualState x:Name="Checked"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="IRectError"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}"/> 
              </ObjectAnimationUsingKeyFrames> 
             </Storyboard> 
            </VisualState> 
            <VisualState x:Name="Unchecked"/> 
            <VisualState x:Name="Indeterminate"/> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <Rectangle x:Name="IRectError" Fill="{DynamicResource BrushTBPRed}" Margin="2" Stroke="Black" Visibility="Hidden"/> 
          <Border BorderBrush="{DynamicResource BrushTBPShadow}" BorderThickness="0,0,2,2" Margin="0" Padding="0" Height="Auto" VerticalAlignment="Stretch"/> 
          <Border BorderBrush="{DynamicResource BrushTBPBlack}" BorderThickness="2,2,0,0" Margin="0" Padding="0" Height="Auto" VerticalAlignment="Stretch"/> 
          <ContentPresenter Margin="2,2,0,0" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
         </Grid> 
         <ControlTemplate.Triggers> 
          <Trigger Property="HasContent" Value="true"> 
           <Setter Property="FocusVisualStyle" Value="{StaticResource CheckRadioFocusVisual}"/> 
           <Setter Property="Padding" Value="4,0,0,0"/> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

Как вы видите ContentPresenter выровнен по центру. Все отлично подходит для короткого содержания, но когда содержание многострочное, выравнивание по левому краю текста находится в центре флажка .. Как я могу изменить TextAlignment из текста в ContentPresenter

Спасибо ..

ответ

1

Решения для моего собственного вопроса заключается в следующем:

  • Добавить TextBlock в шаблон
  • Использование шаблона Связывание>Содержимого для его Текста собственности (и других свойств, если это необходимо)
  • Выравнивать TextBlock (Strech для горизонтальной и Центр для по вертикали)
  • Использование Центр для Text Alignment собственности TextBlock под пункте табл.
  • Remove Content Presnter

Вы сделали!

1

Возможно, вы захотите взглянуть на Control.HorizontalContentAlignment property.

+0

Я знаю HorizontalContentAlignment, речь идет о выравнивании ContentPresenter в. Я уже настроил ContentPresenter в центр. Проблема заключается в тексте внутри ContentPresenter. – Turker

+0

Просто поместите в него ярлык или текстовый блок, и он должен работать. –

0

Вы можете использовать свойство ContentTemplate ContentPresenter. Сначала определите DataTemplate в ресурсах

<DataTemplate x:Key="TextContentTemplate"> 
    <TextBlock Text="{Binding}" TextAlignment="Left" TextWrapping="Wrap"/> 
</DataTemplate> 

И затем использовать его в ContentPresenter:

<ContentPresenter Margin="2,2,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" ContentTemplate="{StaticResource TextContentTemplate}"/> 

Я надеюсь, что это помогает

Смежные вопросы