0

整个情况是这样的:

StackPanel 中的视图上有几个按钮。默认情况下应选择其中的第一个。When the button is chosen it's backgroung must be of green color, the other (not chosen) button's background must be of blue color.

是否可以在 ViewModel 中不实现某些逻辑的情况下实现这样的行为?

更新 1. 我说的是 Buttons 而不是 ToggleButtons

4

2 回答 2

0

AButton不能被选中,也不能像你所说的那样被“选择”。它没有IsSelected属性。如果您想要这种行为,那么您将需要使用 a ToggleButton,或者甚至RadioButtonStyled 看起来像常规的 a 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看起来像Buttons 并满足您的要求的 s:

<StackPanel Orientation="Horizontal">
    <RadioButton Content="One" />
    <RadioButton Content="Two" />
    <RadioButton Content="Three" />
    <RadioButton Content="Four" />
</StackPanel>
于 2013-11-06T12:19:20.757 回答
0

是的,您可以使用Style设置当用户单击它时要更改的属性。

您可以在此处此处找到更多信息

于 2013-11-06T11:33:09.453 回答