按钮宽度未拉伸

Button width is not stretch

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

结果是

如您所见,内容超出了按钮的宽度范围。 如果我清除样式引用,按钮将获得正确的行为。

哪些 属性 规定了这种行为?我怎样才能让这个按钮自动调整大小?

感谢回复。

根据 MahApps 来源中的评论,LightMetroWindowButtonStyle 用于 Metro-style window 标题栏中的最小化、最大化和关闭按钮。出于这个原因,样式设置了 34 的固定 Width

MahApps 的 'standard' 按钮样式似乎是 MahApps.Metro.Styles.MetroButton,所以我建议改用它。实际上看起来这是 默认应用的样式 ,因为您发布的第二张图片(清除了样式的按钮)看起来已经应用了这种样式。

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

如果您想要 'flat' 外观,MetroFlatButton 看起来与第一张图片中的按钮非常相似。您可以看到各种 MahApps 按钮样式 in the MahApps docs and see the actual source code on GitHub .

请注意,某些按钮样式会强制其内容以小写形式显示。如果您想避免这种情况,您可以扩展其中一种 MahApps 样式并覆盖单个 属性,例如:

<Style x:Key="SquareButtonStyleNormalCase"
       BasedOn="{StaticResource SquareButtonStyle}"
       TargetType="Button">
  <Setter Property="m:ControlsHelper.ContentCharacterCasing"
          Value="Normal" />
</Style>