8

使用 MahApps.Metro 时如何防止应用程序图标拉伸到标题栏的高度?无论使用什么大小的图标,图标和标题栏边缘之间都没有空格。我也尝试过使用多尺寸图标,但这不起作用。

这是一个开箱即用的示例:

MahApps.Metro 图​​标

4

2 回答 2

19

受到mahapps punker76 代码的强烈启发,您可以这样做:

<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 属性可能更简单。

于 2014-06-10T15:30:14.770 回答
3

你有几个选择来满足你的要求。

  • 调整库以添加Margin属性Icon并提交拉取请求

MahApps.Metro在 Git 上,您可以将其分叉并根据需要使用Margin属性调整标题栏图标。

目前 TitleBar Icon 似乎没有这个属性,并且根据它的 xaml 定义从边缘开始。

<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" />

然后,您可以提交一个拉取请求,以允许作者将其集成到主库中,如果他们认为这是一个不错的功能。

  • 更简单的选择:使用透明填充调整标题栏图标图像

在标题栏图像的源中添加透明填充。就像是:

在此处输入图像描述

现在,当您将其用作Iconin时,MetroWindow您应该有如下输出:

在此处输入图像描述

于 2014-01-23T11:03:39.413 回答