【问题标题】:WPF: How to make a "pushlike" checkbox?WPF:如何制作“pushlike”复选框?
【发布时间】:2010-11-04 01:38:01
【问题描述】:

我想做一个看起来和按钮一模一样的 CheckBox。我最初的微弱尝试根本不起作用。

<CheckBox x:Name="test">
    Testing!
    <CheckBox.Template>
        <ControlTemplate>
            <Button>
                <ContentPresenter/>
            </Button>
        </ControlTemplate>
    </CheckBox.Template>
</CheckBox>

ContentPresenter 不起作用(按钮为空),单击按钮时,IsChecked 属性不会切换。另外,当 IsChecked 为 true 时,我不知道如何使按钮看起来被按下。

【问题讨论】:

    标签: wpf button checkbox controltemplate


    【解决方案1】:

    我刚刚开始写同样的评论:)

    <ToggleButton Name="tb"  Height="45" Width="45">
            <ToggleButton.Style>
                <Style TargetType="{x:Type ToggleButton}">
                    <Setter Property="Content" Value="False"/>
                    <Style.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter Property="Content" Value="True"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ToggleButton.Style>
        </ToggleButton>
    

    现在如您所愿,复选框控件:

    <CheckBox>
            <CheckBox.Template>
                <ControlTemplate TargetType="CheckBox">
                    <ToggleButton x:Name="toggleButton">
                    </ToggleButton>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="True" SourceName="toggleButton">
                            <Setter Property="Content" Value="True"/>
                        </Trigger>
                        <Trigger Property="Content" Value="True">
                            <Setter Property="IsChecked" Value="True"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                 </ControlTemplate>
            </CheckBox.Template>
        </CheckBox>
    

    【讨论】:

      【解决方案2】:

      我同意 ToggleButton 是要走的路,但如果您希望您的内容显示在您的示例中,请尝试将您的 ContentPresenter 声明更改为:

      <ContentPresenter Content="{TemplateBinding Content}" />
      

      【讨论】:

      • 如果我将 ControlTemplate 声明更改为
      【解决方案3】:

      ToggleButton 会满足您的需求吗? CheckBox 派生自它,因此它们非常相似。

      【讨论】:

      • 是的,我不知道已经有一个单独的类用于看起来像按钮的 CheckBox。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多