2013-02-26 11 views
8

Sono nuovo di WPF e provo (a mio parere) un compito facile ma non l'ho capito. Anche Google non mi aiuterà, o ho fatto la domanda sbagliata.WPF fare clic sulla casella di controllo modifica etichetta Proprietà isChecked

Ho una casella di controllo e un'etichetta; Vorrei che un clic sull'etichetta modificasse la proprietà isChecked della casella di controllo. Voglio farlo completamente in XAML senza codice, perché desidero mantenere il codice dietro file pulito di codice non necessario. Per favore non discutere su questo punto. So che è una singola riga di codice che fa tutto questo in codice!

Lavorare con il setter di eventi sull'etichetta non risolve il problema perché è possibile impostare solo il gestore (che è in codice dietro ovviamente). L'utilizzo di uno storyboard non aiuta in quanto non è possibile verificare il valore effettivo della proprietà.

Qualcuno ha un buon suggerimento? Forse ho trascurato qualcosa. Si prega di fornire alcuni frammenti di codice per la soluzione.

+0

Possibile duplicato di [Modificare il comportamento di un'etichetta per supportare la commutazione facendo clic su WPF] (http://stackoverflow.com/questions/6160566/change-a-labels-behavior-to-support-toggling-by-click- in-wpf) – MyDaftQuestions

risposta

8

incollare questo codice in kaxaml

vedrai che cliccando sull'etichetta alterna la casella di controllo.

[Vedi questo SO answer da Kent]

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <StackPanel> 
    <CheckBox IsChecked="{Binding IsChecked, ElementName=checkbox}" Content="Hello"> 
     <CheckBox.Template> 
      <ControlTemplate TargetType="CheckBox"> 
       <ContentPresenter/> 
      </ControlTemplate> 
     </CheckBox.Template> 
    </CheckBox> 
    <CheckBox x:Name="checkbox" Content="A normal checkbox"/> 
</StackPanel> 
</Page> 
+0

L'ho davvero trascurato ... grazie! – sandkasten

+2

Ho trovato che in un'app XAML WinRT su Windows Phone, non avevo bisogno di usare il modello - il modello predefinito funzionava correttamente (la chiave era la proprietà 'Content'). –

3

È anche possibile fare questo:

<CheckBox> 
    <Label Content="Your text here"/> 
</CheckBox> 

Una limitazione è però che il testo dovrà essere sul lato destro della casella di controllo.

+0

Wow, grazie, ho sempre pensato che ci fosse una soluzione più semplice ed eccola qui! – SpeziFish

+0

Amo questo. Tuttavia, l'allineamento diventa leggermente diverso tra l'etichetta e la casella di controllo. – user3382285

Problemi correlati