Ich habe eine Quiz-Anwendung, wo es bis zu 3 mögliche Antworten geben kann. Die Antworten sind Schaltflächen, denen ein Stil zugewiesen wurde. All Antwort Tasten haben das gleiche Click-Ereignis ...So bestimmen Sie, welchen Stil ein Steuerelement zugewiesen wurde
Private Sub butAnswer_Click(ByVal sender as Object, ByVal e as System.Windows.RoutedEventArgs)
'An Answer has been clicked
Dim butC as Button
Dim butS as String = TryCast(sender, Button).Name.ToString()
'Cycle through all answers and set style
For x = 1 to 3
butC = DirectCast(FindName("butAnswer" & x), Button)
If butS = "butAnswer" & x.ToString Then
butC.Style = DirectCast(FindResource("GlassButtonSelected"), Style)
Else
butC.Style = DirectCast(FindResource("GlassButton"), Style)
End If
Next
End Sub
ich jetzt auf diesen erweitern will, so dass, wenn der Benutzer ein zweites Mal auf einem ‚ausgewählt‘ klickt beantworten den Stil zurückgekehrt wird wieder auf ‚GlassButton‘
If butS = "butAnswer" & x.ToString Then
'Check what style the button has
If 'style is GlassButton' Then
butC.Style = DirectCast(FindResource("GlassButtonSelected"), Style)
Else
butC.Style = DirectCast(FindResource("GlassButton"), Style)
End If
Else
butC.Style = DirectCast(FindResource("GlassButton"), Style)
End If
Meine Frage ist, wie bestimmt ich, welchen Stil die Schaltfläche hat?
ZUSÄTZLICHE UPDATE
Kent, Danke, ich bin neu in WPF und wusste nicht, über all diese zusätzlichen Kontrollen ... ich jetzt habe meine Tasten zu ToggleButtons umgewandelt und haben einen einzigen geprüft und ungeprüft Ereignis, das von allen ToggleButtons verwendet wird. Ich habe meinen Stil so geändert, dass das Ziel ToggleButton ist, und ich habe jetzt nur noch den einen. Ich habe den Stil losgeworden, den ich verwenden wollte, um eine ausgewählte Antwort anzuzeigen - im Grunde eine Veränderung der Hintergrundfarbe. Mein überprüftes Ereignis hat ...
Private Sub togAnswer_Checked(ByVal sender as Object, ByVal e as System.Windows.RoutedEventArgs)
'togAnswer was clicked....
Dim togC as ToggleButton
Dim togS as String = TryCast(sender, ToggleButton).Name.ToString()
'Cycle through all answers and set style
Dim bc = New BrushConverter()
For x = 1 to 3
togC = DirectCast(FindName("togAnswer" & x), ToggleButton)
If togS = "togAnswer" & x.ToString Then
'Set ToggleButton to selected colour
togC.Background = DirectCast(bc.ConvertFrom("#AAFF8020"), Brush)
Else
'Set other ToggleButtons to unselected colour
togC.Background = DirectCast(bc.ConvertFrom("#AA000000"), Brush)
End If
Next
End Sub
Leider ändert sich die Knopffarbe nicht. Irgendeine Idee warum?
Kent, danke für den Zeiger in Richtung ToggleButton (s). Ich habe die vorgeschlagenen Änderungen gemacht, aber ich bin immer noch in einer kleinen Beize ... Die Hintergrundfarbe wird sich nicht ändern. Details in meiner Hauptfrage oben als Update. Irgendwelche Ideen? Jeder .... – Mych
danke für den Zeiger in Richtung ToggleButton (s). Ich habe die vorgeschlagenen Änderungen gemacht, aber ich bin immer noch in einer kleinen Beize ... Die Hintergrundfarbe wird sich nicht ändern. Details in meiner Hauptfrage oben als Update. Irgendwelche Ideen? Anyone .... – Mych
hat mich in die richtige Richtung von ToggleButton (s) hingewiesen. Meine Frage wird beantwortet, obwohl ich immer noch ein neues Problem bezüglich der Änderung des Hintergrunds habe. Ich habe dies als beantwortet markiert und eine separate Frage aufgeworfen – Mych