按钮宽度未拉伸
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
,所以我建议改用它。实际上看起来这是 默认应用的样式 ,因为您发布的第二张图片(清除了样式的按钮)看起来已经应用了这种样式。
还有其他一些,例如 SquareButtonStyle
和 AccentedSquareButtonStyle
,它们在 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>
我尝试使用 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
,所以我建议改用它。实际上看起来这是 默认应用的样式 ,因为您发布的第二张图片(清除了样式的按钮)看起来已经应用了这种样式。
还有其他一些,例如 SquareButtonStyle
和 AccentedSquareButtonStyle
,它们在 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>