繁体   English   中英

WPF ToggleButton看起来像普通按钮

[英]WPF ToggleButton to look like normal button

有没有一种简单的方法可以使ToggleButton显示为普通按钮? 我试图单击该按钮,它将触发IsEnabled对另一个控件的false。 使用ToggleButton,我可以对IsChecked属性进行触发。 但是,切换时,ToggleButton看起来却大不相同。 谢谢。

在WPF设计器中,右键单击有问题的ToggleButton,然后选择Edit Template -> Edit a Copy 选择适当的设置,然后单击确定。

ToggleButton的默认模板将添加到您的XAML中。 在其中删除此代码:

<Trigger Property="IsChecked" Value="true">
    <Setter Property="RenderPressed" TargetName="Chrome" Value="true"/>
</Trigger>

您可以将此样式/模板重用于多个ToggleButton。

编辑

您还有其他选择。 使用标准的Button并连接Click事件处理程序或执行代码的Command绑定,以更新IsChecked属性,例如

<CheckBox IsChecked="{Binding IsChecked}" IsEnabled="False" Content="State" />
<Button Content="Toggle" Command="{Binding ToggleStateCommand}" />

然后,当然,您的命令只需要执行

IsChecked = !IsChecked

所有这些都假定您有一个满意的ICommand实现,并且您正在做MVVM,但这对于本次Q / A来说可能超出了范围。

最简单的方法是使ToggleButton透明,并在其内容中显示其他控件。 为内容设置IsHitTestVisible = False

也可以尝试保证金值。

<ToggleButton Background="Transparent" BorderBrush="Transparent" BorderThickness="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
    <Button Content="Toggle Button" Margin="-5" IsHitTestVisible="True" />
</ToggleButton>

可以自定义以上内容以使用ToggleButton的内容,例如:

<ToggleButton Content="Toggle Button" Background="Transparent" BorderBrush="Transparent" BorderThickness="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Canvas.Left="233" Canvas.Top="158">
    <ToggleButton.ContentTemplate>
        <DataTemplate>
            <Button IsHitTestVisible="False" Content="{Binding}"/>
        </DataTemplate>
    </ToggleButton.ContentTemplate>
</ToggleButton>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM