wpf复选框标签为按钮

时间:2016-07-28 12:53:25

标签: c# wpf button checkbox

在WPF中,我希望CheckBox中的标签表现得像一个按钮,所以当我将复选框切换为ON时,我希望标签更改为按钮,当我将复选框切换为OFF时,然后按钮转回标签。

这是我到目前为止所拥有的

<CheckBox Margin="2,0,2,0"
                            IsChecked="{Binding IsSteps}"
                            HorizontalAlignment="Stretch"
                            VerticalAlignment="Bottom"
                            Height="32"
                            FocusVisualStyle="{x:Null}"
                            Style="{StaticResource SliderCheckBoxStyle}">
    <CheckBox.Content>
        <TextBlock Text="Steps" Foreground="#FFFFFFFF" FontFamily="Lucida Sans" FontSize="8" FontWeight="Bold"/>
    </CheckBox.Content>
</CheckBox>

1 个答案:

答案 0 :(得分:2)

在Checkbox.Content中,创建一个包含TextBlock和Button的StackPanel。 然后,您可以使用触发器和设置器将TextBlock.Visibilty和Button.Visibilty绑定到“IsSteps”。

<CheckBox Margin="2,0,2,0"
                            IsChecked="{Binding IsSteps}"
                            HorizontalAlignment="Stretch"
                            VerticalAlignment="Bottom"
                            Height="32"
                            FocusVisualStyle="{x:Null}"
                            Style="{StaticResource SliderCheckBoxStyle}">
    <CheckBox.Content>
        <StackPanel>
            <TextBlock Text="Steps" Foreground="#FFFFFFFF" FontFamily="Lucida Sans" FontSize="8" FontWeight="Bold">
                <TextBlock.Style>
                    <Style TargetType="TextBlock">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsSteps}" Value="True">
                                <Setter Property="Visibility" Value="Collapsed">
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                <TextBlock.Style>
            </TextBlock>
            <Button>
                <Button.Style>
                    <Style TargetType="Button">
                        <Style.Triggers>
                           <DataTrigger Binding="{Binding IsSteps}" Value="False">
                               <Setter Property="Visibility" Value="Collapsed">
                           </DataTrigger>
                        </Style.Triggers>
                    </Style>
                <Button.Style>
            </Button>
        </StackPanel>
    </CheckBox.Content>
</CheckBox>

现在,他们的Visibility属性依赖于DataContext对象中的IsSteps,因此当一个出现时,其他一个消失。