如何将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
相关产品推荐
相关产品推荐

