我尝试使用MahApps的metro风格,但按钮变得不是" SizeToContent"或者不成为AutoResized或类似的东西。
这是我的按钮样式
<Style x:Key="GrayMetroButtonStyle" TargetType="Button" BasedOn="{StaticResource LightMetroWindowButtonStyle}">
<Setter Property="Margin" Value="5"/>
<Setter Property="Background" Value="LightGray"/>
<Setter Property="Padding" Value="2"/>
</Style>
这是在WPF中使用的样式。按钮列的宽度大于检查自动调整大小所需的按钮。
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="80" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Text="{Binding ManifestFileName}" Margin="5" />
<Button Grid.Column="1" Content="Change" Margin="2" Visibility="{Binding LoadButtonVisibility}" Command="{Binding LoadManifest}" Style="{StaticResource GrayMetroButtonStyle}" />
</Grid>
如您所见,内容超出按钮宽度范围。 如果我清除了样式参考,按钮会获得正确的行为。
这个行为属于哪个属性?如何使这个按钮可以自动缩放?
感谢您的回复。
答案 0 :(得分:1)
根据MahApps来源中的评论,LightMetroWindowButtonStyle
旨在用于Metro风格窗口标题栏中的最小化,最大化和关闭按钮。因此,该样式设置了Width
的固定34
。
看起来MahApps的“标准”按钮样式是MahApps.Metro.Styles.MetroButton
,所以我建议使用它。实际上看起来这是默认情况下应用的样式,因为您发布的第二个图像(已清除样式的按钮)看起来已经应用了此样式。
还有其他一些内容,例如SquareButtonStyle
和AccentedSquareButtonStyle
,它们在MahApps示例应用中展示:
如果你想要'平面'外观,MetroFlatButton
看起来非常类似于第一张图片中的按钮。您可以看到各种MahApps按钮样式in the MahApps docs并查看实际的源代码on GitHub。
请注意,某些按钮样式会强制其内容以小写显示。如果您想避免这种情况,可以扩展其中一个MahApps样式并覆盖单个属性,例如:
<Style x:Key="SquareButtonStyleNormalCase"
BasedOn="{StaticResource SquareButtonStyle}"
TargetType="Button">
<Setter Property="m:ControlsHelper.ContentCharacterCasing"
Value="Normal" />
</Style>