WPF中的ToggleButtons

时间:2014-07-21 17:54:24

标签: c# wpf togglebutton

我有两个ToggleButtons。我希望他们中的任何一个在任何时候都处于Pressed状态。所以,让我们说Model ToggleButton被迫:

我想实现以下概念:

  1. 如果我按Drawing ToggleButtonModel ToggleButton将被取消,Drawing ToggleButton将进入按下状态。
  2. 如果按下处于按下状态的Model Button,则不会发生任何事情。
  3. 顺便说一下,到目前为止我所做的一切都是:(

    <ToggleButton Width="50" Height="23"  Margin="0 0 0 0">Model</ToggleButton>
    <ToggleButton Width="50" Height="23"  Margin="0 0 7 0">Drawing</ToggleButton>
    

    更新

    使用评论下提供的链接,我想出了这个:

    <RadioButton Style="{StaticResource {x:Type ToggleButton}}" Content="Model" IsChecked="True" />
    <RadioButton Style="{StaticResource {x:Type ToggleButton}}" Content="Drawing" />
    

    现在上面的代码给了我两个按钮,但是我如何设计这些呢?我知道如何风格。但我不知道这里的风格是什么?我的意思是我已经在这里填充了样式属性,如何设置ToggleButton本身的样式?

    enter image description here

2 个答案:

答案 0 :(得分:3)

由于 RadioButton继承自ToggleButton ,您可以为其设置ToggleButton样式, 使用BasedOn继承ToggleButton的默认样式 < / strong>像这样:

<RadioButton GroupName="Test" Width="50" Height="23" Margin="0 0 7 0"
                Content="Model">
    <RadioButton.Style>
        <Style TargetType="ToggleButton"
               BasedOn="{StaticResource {x:Type ToggleButton}}">
            <Setter Property="Background" Value="Red"/>
            <!-- Set other properties here-->
        </Style>
    </RadioButton.Style>
</RadioButton>

答案 1 :(得分:2)

根据this answer DLeh linked in comments,您可以通过设置RadioButton的样式来使用ToggleButton样式。

<RadioButton Style="{StaticResource {x:Type ToggleButton}}" />

要回答关于如何为此自定义样式属性的第二个问题,您可以创建另一种继承自基本ToggleButton样式的样式,并使用它代替。像这样:

<Style x:Key="CustomToggleButtonStyle" 
       TargetType="{x:Type RadioButton}" 
       BasedOn="{StaticResource {x:Type ToggleButton}}">
    // Custom Style setters here
</Style>

<RadioButton Style="{StaticResource CustomToggleButtonStyle}" />

当然,总是可以从头开始完全重写整个模板。 MSDN有一个很好的例子,您可以使用custom ToggleButton Template开始。