【发布时间】:2014-01-22 13:38:00
【问题描述】:
如何防止应用程序图标在使用 MahApps.Metro 时拉伸到标题栏的高度?无论使用什么大小的图标,图标和标题栏边缘之间都没有空格。我也尝试过使用多尺寸图标,但这不起作用。
这是一个开箱即用的示例:
【问题讨论】:
标签: wpf icons mahapps.metro
如何防止应用程序图标在使用 MahApps.Metro 时拉伸到标题栏的高度?无论使用什么大小的图标,图标和标题栏边缘之间都没有空格。我也尝试过使用多尺寸图标,但这不起作用。
这是一个开箱即用的示例:
【问题讨论】:
标签: wpf icons mahapps.metro
受到mahapps punker76's code 的强烈启发,您可以这样做:
<MahApps:MetroWindow.IconTemplate>
<DataTemplate>
<Grid Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"
Margin="4"
Background="Transparent"
RenderOptions.EdgeMode="Aliased"
RenderOptions.BitmapScalingMode="HighQuality">
<Image Source="Images/Document Alignment.ico"></Image>
</Grid>
</DataTemplate>
</MahApps:MetroWindow.IconTemplate>
但 Icon Margin 属性可能更简单。
【讨论】:
您有几个选项可以满足您的要求。
Margin 属性添加到 Icon 并提交拉取请求MahApps.Metro 在 Git 上,您可以根据需要使用Margin 属性对其进行分叉并调整标题栏图标。
<Grid x:Name="PART_TitleBar" Background="Transparent"
Height="{Binding TitlebarHeight, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Controls:MetroWindow}}}"
Visibility="{TemplateBinding ShowTitleBar, Converter={StaticResource BooleanToVisibilityConverter}}"
Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Visibility="{TemplateBinding ShowIconOnTitleBar, Converter={StaticResource BooleanToVisibilityConverter}}"
Source="{TemplateBinding Icon}"
RenderOptions.EdgeMode="Aliased"
RenderOptions.BitmapScalingMode="HighQuality" />
然后,如果作者认为这是一个不错的功能,您可以提交一个拉取请求以允许他们将其集成到主库中。
在标题栏图像的源代码中添加透明填充。比如:
现在,当您在 MetroWindow 中将其用作 Icon 时,您应该会得到如下输出:
【讨论】: