2010-06-01 18 views
14

Necesito aplicar un TextWrapping en el WPF CheckBox.estilo WPF CheckBox con el ajuste de texto

Por favor, mire estas dos muestras:

<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> 

Si uso un TextBlock en el Content del CheckBox, el elemento de retención (alineación vertical es superior) y el texto se muestra correctamente, pero no el acelerador.

alt text

Si utilizo un AccessText en el Content de la CheckBox, el elemento de verificación aparece mal (alineación vertical es el centro).

¿Cómo puedo cambiar el Style de los elementos para mostrar este CheckBox correcto?

+3

de uno es el tesoro de otro hombre. Quería averiguar cómo hacer que mi elemento de verificación se centrara verticalmente con respecto al texto, porque VerticalAlignment y VerticalContentAlignment no ayudan. Respuesta: ¡Solo tengo que usar AccessText en lugar de TextBlock! +1 por el consejo :) – Qwertie

+0

De nada. Pero mi pregunta aquí sigue ... –

Respuesta

13

Si combina los dos, probablemente obtendrá el efecto que desea.

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

parece que no funciona en 3.5sp1 –

+0

Lo he intentado, no funciona. Puede intentarlo muy rápido utilizando, por ejemplo, el XamlPad. –

0

¿Has probado a establecer un estilo implícito para AccessText, o simplemente un estilo de texto de acceso que puedes aplicar?

Aquí es un estilo implícita de que funcionaría:

<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> 

Si se incluye esto en su proyecto la AccessText debería funcionar de la manera deseada. Si necesita algo más, ajuste el estilo.

Si no desea que todos AccessTexts a comportarse de esta manera, el nombre del estilo y aplicarlo donde vaya a utilizarlo: basura

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

Desafortunadamente no funcionaba como con TextBlock. –

Cuestiones relacionadas