Benutzer mit den meisten Antworten
Xaml/C#: Checkbox.Checked funktioniert nicht

Frage
-
Hallo zusammen,
ich arbeite z.Z. an einer App, die auch einen Fehlerreport enthält.
Dieser wurde als UserControl designt und der sieht wie folgt aus:
<ListView Grid.Row="1" x:Name="ErrorList" Background="Beige" > <ListViewItem> <CheckBox x:Name="Option1_CheckBox" Content="Fehler beim Inhalt oder Grammatik" Style="{StaticResource NewCheckBoxStyle}" Checked="Option_Checked"/> </ListViewItem> <ListViewItem> <CheckBox x:Name="Option2_CheckBox" Content="Fenster öffnet sich nicht" Style="{StaticResource NewCheckBoxStyle}" Checked="Option_Checked"/> </ListViewItem> <ListViewItem> <CheckBox x:Name="Option3_CheckBox" Content="Falsche Parameteranzeige" Style="{StaticResource NewCheckBoxStyle}" Checked="Option_Checked"/> </ListViewItem> </ListView>
Jetzt versuche ich schon "ewig" hinzubekommen, dass wenn eine Checkbox angeklickt wird, alle anderen unchecked sind.
Wie macht man das? Z.b. if(Option3_Checkbox = true) Option1_Checkbox && Option2_Checkbox.unchecked funktioniert nicht.Habt ihr vielleicht eine Idee?
Vielen Dank und einen schönen Abend.
LG Michael
Antworten
-
Oder falls es mal mehr werden sollten geht das auch "eleganter":
var thisCheckBox = sender as CheckBox; var ctrls = new CheckBox[]{ CheckBox1, CheckBox2, CheckBox3}; foreach(var ctrl in ctrls) { if(ctrl != thisCheckBox){ ctrl.IsChecked = false; } }
Allerdings verwirrt es den Nutzer mehr, als dass es ihm hilft. Für derartige Funktionen gibt es die von Dimitar erwähnten RadioButtons.Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Als Antwort markiert Michael80xxx Mittwoch, 17. Mai 2017 20:44
-
Hallo Michael,
eine einfach Möglichkeit, wäre das hier.
<StackPanel VerticalAlignment="Top"> <CheckBox x:Name="chk1" Content="Chk1" Checked="CheckBox_Checked" /> <CheckBox x:Name="chk2" Content="Chk2" Checked="CheckBox_Checked" /> <CheckBox x:Name="chk3" Content="Chk3" Checked="CheckBox_Checked" /> </StackPanel>
private void CheckBox_Checked(object sender, RoutedEventArgs e) { var chk = sender as CheckBox; if (chk == chk1) { chk2.IsChecked = false; chk3.IsChecked = false; } else if (chk == chk2) { chk1.IsChecked = false; chk3.IsChecked = false; } else if (chk == chk3) { chk1.IsChecked = false; chk2.IsChecked = false; } }
Gruß, Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
- Als Antwort markiert Michael80xxx Mittwoch, 17. Mai 2017 20:44
Alle Antworten
-
Hallo Michael,
Wenn nur eine Option ausgewählt werden kann, wäre vielleicht das Optionsfeld geeigneter:
RadioButton ClassWenn Du dies trotzdem mit Kontrollkästchen bewerkstelligen möchtest, sieh Dir das Verfahren in folgendem Thread an (ist zwar für Windows Phone 8, aber sollte mit minimalem Aufwand auch auf die Universelle Windows-Plattform anpassbar sein):
Allow user to select only one Checkbox at a time in LongListSelector Windows Phone 8 App (für das Ersetzen von LongListSelector siehe hier)Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Michael,
eine einfach Möglichkeit, wäre das hier.
<StackPanel VerticalAlignment="Top"> <CheckBox x:Name="chk1" Content="Chk1" Checked="CheckBox_Checked" /> <CheckBox x:Name="chk2" Content="Chk2" Checked="CheckBox_Checked" /> <CheckBox x:Name="chk3" Content="Chk3" Checked="CheckBox_Checked" /> </StackPanel>
private void CheckBox_Checked(object sender, RoutedEventArgs e) { var chk = sender as CheckBox; if (chk == chk1) { chk2.IsChecked = false; chk3.IsChecked = false; } else if (chk == chk2) { chk1.IsChecked = false; chk3.IsChecked = false; } else if (chk == chk3) { chk1.IsChecked = false; chk2.IsChecked = false; } }
Gruß, Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
- Als Antwort markiert Michael80xxx Mittwoch, 17. Mai 2017 20:44
-
Oder falls es mal mehr werden sollten geht das auch "eleganter":
var thisCheckBox = sender as CheckBox; var ctrls = new CheckBox[]{ CheckBox1, CheckBox2, CheckBox3}; foreach(var ctrl in ctrls) { if(ctrl != thisCheckBox){ ctrl.IsChecked = false; } }
Allerdings verwirrt es den Nutzer mehr, als dass es ihm hilft. Für derartige Funktionen gibt es die von Dimitar erwähnten RadioButtons.Viele Grüße, Tom Lambert - MVP, MCC und MSP
Wozu Antworten markieren und Posts bewerten? Klicke hier
Nützliche Links: .NET Quellcode | C#/VB.NET Konverter | GitHub Forum Samples | Account bestätigen (Verify Your Account)
Ich: Webseite | Facebook | Twitter | Code Snippets | GitHub- Als Antwort markiert Michael80xxx Mittwoch, 17. Mai 2017 20:44