全体の状況は次のようになります。
StackPanel のビューにはいくつかのボタンがあります。それらの最初のものはデフォルトで選択されるべきです。ボタンが選択されている場合、その背景は緑色である必要があり、他の (選択されていない) ボタンの背景は青色である必要があります。
ViewModel にいくつかのロジックを実装せずに、このような動作を実装することは可能ですか?
更新 1. トグルボタンではなくボタンについて話します
全体の状況は次のようになります。
StackPanel のビューにはいくつかのボタンがあります。それらの最初のものはデフォルトで選択されるべきです。ボタンが選択されている場合、その背景は緑色である必要があり、他の (選択されていない) ボタンの背景は青色である必要があります。
ViewModel にいくつかのロジックを実装せずに、このような動作を実装することは可能ですか?
更新 1. トグルボタンではなくボタンについて話します
はい、Style
ユーザーがクリックしたときに変更するプロパティの設定を使用できます。
詳細については、こちらとこちらをご覧ください
Aを選択するButton
ことも、いわゆる「選択」することもできません。IsSelected
プロパティはありません。その動作が必要な場合は、通常のように見えるa ToggleButton
、または d である aRadioButton
を使用する必要があります。Style
Button
Style
これをあなたのセクションに追加してくださいResources
:
<Style TargetType="{x:Type RadioButton}">
<Setter Property="Foreground" Value="White" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<Border CornerRadius="3.5" Background="White" BorderBrush="Black" BorderThickness="1" Padding="1">
<Border Name="Border" CornerRadius="3" Background="Blue" Padding="10,0,10,2">
<ContentPresenter />
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Border" Property="Background" Value="Red" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
次にRadioButton
、 のように見えButton
、要件を満たすを使用できます。
<StackPanel Orientation="Horizontal">
<RadioButton Content="One" />
<RadioButton Content="Two" />
<RadioButton Content="Three" />
<RadioButton Content="Four" />
</StackPanel>