Подтвердить что ты не робот

Стиль WPF CheckBox с TextWrapping

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

Посмотрите на два примера:

<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 правильно?

4b9b3361

Ответ 1

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

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

Ответ 2

Вы пытались установить неявный стиль для 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>