2010-06-01 4 views
14

Мне нужно применить TextWrapping в WPF CheckBox.Стиль WPF CheckBox с TextWrapping

Пожалуйста, посмотрите на этих двух образцов:

<CheckBox> 
    <TextBlock TextWrapping="Wrap" 
      Text="_This is a long piece of text attached to a checkbox."/> 
</CheckBox> 

<CheckBox> 
    <AccessText TextWrapping="Wrap" 
       Text="_This is a long piece of text attached to a checkbox."/> 
</CheckBox> 

Если я использую TextBlock в Content в CheckBox, проверка элемента (вертикальное выравнивание вверху) и текст отображается должным образом, но не акселератора.

alt text

Если я использую AccessText в Content от CheckBox, то проверка элемент отображает неправильно (вертикальное выравнивание в центре).

Как я могу изменить Style элементов, чтобы отобразить это CheckBox правильно?

+3

одного человека является сокровищем для другого человека. Я хотел бы выяснить, как сделать элемент проверки вертикально по отношению к тексту, потому что VerticalAlignment и VerticalContentAlignment не помогают. Ответ: Мне просто нужно использовать AccessText вместо TextBlock! +1 для подсказки :) – Qwertie

+0

Добро пожаловать. Но мой вопрос здесь остается ... –

ответ

13

Если вы объедините два, вы, вероятно, получите желаемый эффект.

<CheckBox> 
    <TextBlock> 
     <AccessText TextWrapping="Wrap" 
        Text="_This is a long piece of text attached to a checkbox."/> 
    </TextBlock> 
</CheckBox> 
+0

кажется, что он не работает на 3.5sp1 –

+0

Я пробовал, он не работает. Вы можете попробовать это очень быстро, например, XamlPad. –

0

Вы пытались установить неявный стиль для AccessText или просто стиль AccessText, который вы можете применить?

Вот неявный стиль, который будет работать:

<Style x:Key="{x:Type AccessText}" 
    TargetType="{x:Type AccessText}" 
    BasedOn="{x:Null}"> 
    <Setter Property="Foreground" Value="Black"/> 
    <Setter Property="FontFamily" Value="Segoe UI"/> 
    <Setter Property="FontSize" Value="12"/> 
    <Setter Property="TextTrimming" Value="CharacterEllipsis"/> 
    <Setter Property="TextWrapping" Value="NoWrap"/> 
    <Setter Property="OverridesDefaultStyle" Value="True"/> 
    <Setter Property="VerticalAlignment" Value="Top"/> 
    <Setter Property="Margin" Value="5,2"/> 
    <Setter Property="Text" Value="AccessText"/> 
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Foreground" Value="Gray"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

Если включить это в вашем проекте AccessText должен работать так, как вы хотите. Если вам нужно что-то еще, отрегулируйте стиль.

Если вы не хотите, чтобы все AccessTexts вести себя таким образом, имя стиля и применять его там, где вы его используете: мусор

<CheckBox>   
    <AccessText TextWrapping="Wrap" Style="{DynamicResource CkbxAccessTextStyle}"   
       Text="_This is a long piece of text attached to a checkbox."/>   
</CheckBox> 
+0

К сожалению, не работает с TextBlock. –

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