2013-02-26 21 views
8

Ich bin neu bei WPF und versuche (meiner Meinung nach) eine einfache Aufgabe, aber ich habe es nicht verstanden. Selbst Google wird mir nicht helfen, oder ich habe die falsche Frage gestellt.WPF klicken auf Etikett ändern Kontrollkästchen isChecked Eigenschaft

Ich habe ein Kontrollkästchen und ein Etikett; Ich wünsche mir, dass ein Klick auf das Label die isChecked-Eigenschaft des Kontrollkästchens ändert. Ich möchte dies vollständig in XAML ohne Code hinterher tun, weil ich den Code hinter der Datei von unnötigem Code sauber halten möchte. Bitte diskutieren Sie nicht in diesem Punkt. Ich weiß, es ist eine einzelne Codezeile, die das im Code hinter sich hat!

Die Arbeit mit Event-Setter auf dem Etikett löst das Problem nicht, da Sie nur den Handler (der natürlich im Code steckt) einstellen können. Die Verwendung eines Storyboards hilft nicht, da der tatsächliche Wert der Eigenschaft nicht überprüft werden kann.

Hat jemand einen guten Tipp? Vielleicht habe ich etwas übersehen. Bitte geben Sie ein Code-Snippet für die Lösung an.

+0

Mögliche Duplikate von [Ändern Sie das Verhalten eines Labels so, dass das Umschalten durch Klicken in WPF unterstützt wird] (http://stackoverflow.com/questions/6160566/change-a-labels-behavior-to-support-toggling-by-click- in-wpf) – MyDaftQuestions

Antwort

8

Fügen Sie diesen Code in Kaxaml

Sie werden sehen, dass auf dem Etikett klicken Sie das Kontrollkästchen schaltet. obwohl

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

Eine Einschränkung ist

, dass der Text auf der rechten Seite muss der Checkbox wird:

[Sehen Sie diese SO answer von 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

Ich habe es wirklich übersehen ... danke! – sandkasten

+2

Ich habe festgestellt, dass ich in einer WinRT XAML App auf Windows Phone die Vorlage nicht verwenden musste - die Standardvorlage funktionierte einwandfrei (der Schlüssel war die 'Content' Eigenschaft). –

3

Sie auch dies tun können.

+0

Wow, danke, ich dachte immer, es muss eine einfachere Lösung geben und hier ist es! – SpeziFish

+0

Ich liebe das. Die Ausrichtung wird jedoch zwischen der Beschriftung und dem Kontrollkästchen ein wenig unterbrochen. – user3382285

Verwandte Themen