使用TextWrapping的WPF CheckBox样式

时间:2010-06-01 13:42:08

标签: wpf checkbox styles alignment textwrapping

我需要在WPF TextWrapping中应用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的{​​{1}}中使用Content,则检查元素(垂直对齐位于顶部)并且文本正确显示,但不显示加速器。

alt text

如果我在CheckBox的{​​{1}}中使用AccessText,则检查元素显示错误(垂直对齐为中心)。

如何更改元素的Content以显示此CheckBox是否正确?

3 个答案:

答案 0 :(得分:15)

如果你将两者结合起来,你可能会得到你想要的效果。

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

答案 1 :(得分: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> 

答案 2 :(得分:0)

使用 VerticalContentAlignment 将框对准顶部。使用填充调整文本位置。

<CheckBox VerticalContentAlignment="Top" Padding="2,-2,0,0">
    <AccessText Text="_This is a long piece of text attached to a checkbox." TextWrapping="Wrap"/>
</CheckBox>