2010-06-01 8 views
14

Devo applicare uno TextWrapping nel WPF CheckBox.WPF stile CheckBox con TextWrapping

Si prega di guardare questi due campioni:

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

Se io uso un TextBlock nel Content del CheckBox, l'elemento di controllo (allineamento verticale è in alto) e il testo viene visualizzato correttamente, ma non è l'acceleratore.

alt text

Se uso un AccessText nel Content del CheckBox, l'elemento di controllo visualizza errata (allineamento verticale è centro).

Come posso modificare Style degli elementi per visualizzare questo CheckBox corretto?

+3

di un uomo è il tesoro di un altro uomo. Volevo capire come rendere il mio elemento di controllo verticalmente centrato rispetto al testo, perché VerticalAlignment e VerticalContentAlignment non aiutano. Risposta: Devo solo usare AccessText invece di TextBlock! +1 per il suggerimento :) – Qwertie

+0

Prego. Ma la mia domanda qui rimane ... –

risposta

13

Se si uniscono i due si otterrà probabilmente l'effetto desiderato.

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

sembra che non funzioni su 3.5sp1 –

+0

Ho provato, non funziona. Puoi provarlo molto velocemente usando, ad esempio, XamlPad. –

0

Hai provato a impostare uno stile implicito per AccessText o solo uno stile AccessText che puoi applicare?

Ecco uno stile implicita che avrebbe funzionato:

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

Se si include questo nel progetto del AccessText dovrebbe funzionare nel modo desiderato. Se hai bisogno di qualcos'altro, regola lo stile.

Se non si desidera che tutti AccessTexts a comportarsi in questo modo, un nome allo stile e applicarlo in cui lo si utilizza: spazzatura

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

Unfortunally non ha funzionato come con TextBlock. –