使用MahApps.Metro时,应用程序图标会延伸到标题栏高度

时间:2014-01-22 13:38:00

标签: wpf icons mahapps.metro

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

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

MahApps.Metro Icon

2 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:3)

您有几种方法可以满足您的要求。

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

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

Currently TitleBar Icon does not seem to have this property and starts from the edges based on it's xaml definition.

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

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

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

在标题栏图片的来源中添加透明填充。类似的东西:

enter image description here

现在当您在Icon中使用MetroWindow作为{{1}}时,您应该输出如下内容:

enter image description here