【问题标题】:Application icon stretches to title bar height when using MahApps.Metro使用 MahApps.Metro 时,应用程序图标延伸到标题栏高度
【发布时间】:2014-01-22 13:38:00
【问题描述】:

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

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

【问题讨论】:

    标签: wpf icons mahapps.metro


    【解决方案1】:

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

    【讨论】:

    • 并尊重 ShowIconOnTitleBar。
    • 我终于回到了这个问题上,它起作用了。很好的解决方案!
    【解决方案2】:

    您有几个选项可以满足您的要求。

    • 调整库以将 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" />
    

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

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

    在标题栏图像的源代码中添加透明填充。比如:

    现在,当您在 MetroWindow 中将其用作 Icon 时,您应该会得到如下输出:

    【讨论】:

    • 感谢#L65-L76 语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2011-04-23
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多