Pregunta

Me gustaría hacer un CheckBox que se vea exactamente como un botón. Mi intento débil inicial no funciona en absoluto.

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

ContentPresenter no funciona (el botón está vacío) y cuando se hace clic en el botón, la propiedad IsChecked no se alterna. Además, no sé cómo hacer que el botón parezca presionado cuando IsChecked es verdadero.

¿Fue útil?

Solución

Sería un ToggleButton ¿tus necesidades? CheckBox se deriva de él, por lo que son muy similares.

Otros consejos

Acabo de empezar a escribir el mismo comentario :)

<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>

Y ahora, como quería, control de casilla de verificación:

<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>

Estoy de acuerdo en que ToggleButton es el camino a seguir, pero si desea que su contenido aparezca en su ejemplo, intente cambiar su declaración de ContentPresenter a esto:

<ContentPresenter Content="{TemplateBinding Content}" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top