You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将WPF中基于MaterialDesignPaperButton的自定义按钮样式的Height属性设为默认值

如何将WPF中基于MaterialDesignPaperButton的自定义按钮样式的Height属性设为默认值

嘿,我完全get你的需求!你已经基于MaterialDesignPaperButton创建了自定义的StateMachineButton样式,现在想让按钮的高度恢复到MaterialDesign原生按钮的默认高度,对吧?

其实解决起来很简单,WPF里控件的“默认高度”本质上就是让控件自己根据内容和内置样式来计算高度,对应的值就是Double.NaN(表示“自动”)。你只需要在自定义样式里添加一个针对Height属性的Setter,把值设为这个特殊值就行。

修改后的样式代码如下:

<!-- 记得在XAML根元素添加System命名空间引用:
xmlns:System="clr-namespace:System;assembly=mscorlib"
-->
<Style x:Key="StateMachineButton" TargetType="{x:Type Button}" 
       BasedOn="{StaticResource MaterialDesignPaperButton}">
    <Setter Property="Margin" Value="16 0 16 0" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
    <Setter Property="HorizontalAlignment" Value="Center" />
    <Setter Property="VerticalAlignment" Value="Center" />
    <Setter Property="TextBlock.TextAlignment" Value="Center" />
    <!-- 添加这行,让高度回到默认的自动计算状态 -->
    <Setter Property="Height" Value="{x:Static System:Double.NaN}" />
</Style>

另外还要注意两个小细节:

  • 如果你的按钮实例上手动设置了Height属性,那得把实例上的这个属性删掉,不然会覆盖样式里的设置;
  • 要是MaterialDesignPaperButton本身的样式已经定义了固定高度,这个设置会让按钮放弃固定值,回到根据内容自适应的状态——如果你只是想继承原生样式的固定高度,那其实不用加这行,只要确保你的样式没有覆盖Height就行。

备注:内容来源于stack exchange,提问作者Daimonion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:13:01