Der RadioButton ist generell eine spezielle Ausprägung des ToggleButtons. Der RadioButton bzw. ToggleButton ist eines der wenigen Controls, die über einen Namen Bezug zu anderen Controls haben. Besitzen zum Beispiel zwei RadioButtons auf einer View den gleich GroupName, kann immer nur ein Control angewählt werden.
Aber wie funktioniert das eigentlich? Was passiert hinter den Kulissen?
An sich ist die Umsetzung gar nicht so kompliziert. Jedes Control überwacht die IsChecked Property. Wird das Control ausgewählt (IsChecked wird auf true gesetzt), wird zwischen zwei Situationen unterschieden und es passiert folgendes:
- Es wurde beim aktuellen Control kein GroupName angegeben, so werden alle RadioButtons des selben Parents, die ebenfalls keinen GroupName besitzen und deselektiert (IsChecked wird auf false gesetzt).
Im folgenden Beispiel kann immer nur einer der Buttons 1, 2 oder 3 gesetzt werden. Button 4 spielt hierbei keine Rolle!<StackPanel> <RadioButton x:Name="button1">Button 1</RadioButton> <RadioButton x:Name="button2">Button 2</RadioButton> <RadioButton x:Name="button3">Button 3</RadioButton> </StackPanel> <RadioButton x:Name="button4">Button 4</RadioButton>
- Wird ein GroupName angegeben, werden alle RadioButtons geprüft, ob sie den gleichen Namen und die gleiche VisualRoot besitzen. Bei all diesen, werden die Elemente, die nicht angeklickt worden sind deselektiert.
Im folgenden Beispiel bilden die RadioButtons 1, 2 und 4 eine Gruppe. Das StackPanel spielt dabei keine Rolle, ebenso wie der RadioButton 2. <StackPanel> <RadioButton x:Name="button1" GroupName="Group1">Button 1</RadioButton> <RadioButton x:Name="button2">Button 2</RadioButton> <RadioButton x:Name="button3" GroupName="Group1">Button 3</RadioButton> </StackPanel> <RadioButton x:Name="button4" GroupName="Group1">Button 4</RadioButton>
Keine Kommentare:
Kommentar veröffentlichen