按钮宽度不伸展

时间:2018-01-09 11:09:49

标签: wpf mahapps.metro

我尝试使用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>

结果是 enter image description here

如您所见,内容超出按钮宽度范围。 如果我清除了样式参考,按钮会获得正确的行为。 enter image description here

这个行为属于哪个属性?如何使这个按钮可以自动缩放?

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

根据MahApps来源中的评论,LightMetroWindowButtonStyle旨在用于Metro风格窗口标题栏中的最小化,最大化和关闭按钮。因此,该样式设置了Width的固定34

看起来MahApps的“标准”按钮样式是MahApps.Metro.Styles.MetroButton,所以我建议使用它。实际上看起来这是默认情况下应用的样式,因为您发布的第二个图像(已清除样式的按钮)看起来已经应用了此样式。

还有其他一些内容,例如SquareButtonStyleAccentedSquareButtonStyle,它们在MahApps示例应用中展示:

MahApps Metro Demo Application

如果你想要'平面'外观,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>