Wie gehe ich am besten mit WPF-Optionsfeldern um?
Ich habe einige RadioButtons in meinem XAML ...
<StackPanel>
<RadioButton Name="RadioButton1" GroupName="Buttons" Click="ButtonsChecked" IsChecked="True">One</RadioButton>
<RadioButton Name="RadioButton2" GroupName="Buttons" Click="ButtonsChecked">Two</RadioButton>
<RadioButton Name="RadioButton3" GroupName="Buttons" Click="ButtonsChecked">Three</RadioButton>
</StackPanel>
Und ich kann ihre Klickereignisse im Visual Basic-Code verarbeiten. Das funktioniert...
Private Sub ButtonsChecked(ByVal sender As System.Object, _ ByVal e As System.Windows.RoutedEventArgs) Select Case CType(sender, RadioButton).Name Case "RadioButton1" 'Do something one Exit Select Case "RadioButton2" 'Do something two Exit Select Case "RadioButton3" 'Do something three Exit Select End Select End Sub
Aber ich würde es gerne verbessern. Dieser Code schlägt fehl ...
<StackPanel>
<RadioButton Name="RadioButton1" GroupName="Buttons" Click="ButtonsChecked" Command="one" IsChecked="True">One</RadioButton>
<RadioButton Name="RadioButton2" GroupName="Buttons" Click="ButtonsChecked" Command="two">Two</RadioButton>
<RadioButton Name="RadioButton3" GroupName="Buttons" Click="ButtonsChecked" Command="three">Three</RadioButton>
</StackPanel>
Private Sub ButtonsChecked(ByVal sender As System.Object, _ ByVal e As System.Windows.RoutedEventArgs) Select Case CType(sender, RadioButton).Command Case "one" 'Do something one Exit Select Case "two" 'Do something two Exit Select Case "three" 'Do something three Exit Select End Select End Sub
In meinem XAML bekomme ich eine blaue, schnörkellose Unterstreichung auf demBefehl = Attribute und dieser Tipp ...
'CommandValueSerializer' ValueSerializer cannot convert from 'System.String'.
In meinem VB bekomme ich eine grüne, schnörkellose Unterstreichung auf demFall auswählen Linie und diese Warnung ...
Runtime errors might occur when converting 'System.Windows.Input.ICommand' to 'String'.
Noch besser wäre es, Enum-Typ-Befehle mit vollständigen Intellisense- und Kompilierungsfehlern anstelle von Laufzeitfehlern bei Tippfehlern zu verwenden. Wie kann ich das verbessern?