私は最大3つの可能な答えがあることができるクイズアプリケーションを持っています。答えは、スタイルが割り当てられたボタンです。すべての回答ボタンには同じクリックイベントがあります...
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
これを拡張して、ユーザーが「選択された」回答を2回クリックすると、スタイルが「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
私の質問は、ボタンのスタイルをどのように判断するかです。
追加の更新
ケント、ありがとう、私はwpfを初めて使用し、これらすべての追加のコントロールについて知りませんでした...ボタンをToggleButtonsに変換し、すべてのToggleButtonsで使用される単一のチェック済みおよび未チェックのイベントがあります。ターゲットがToggleButtonになるようにスタイルを修正しましたが、これで1つだけになりました。選択した回答を示すために使用する予定だったスタイル(基本的には背景色の変更)を削除しました。私のチェック済みイベントには...
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
残念ながら、ボタンの色は変わりません。なぜですか?