wpf - MahApps.Metro 图​​标未显示

标签 wpf mahapps.metro

我正在尝试使用 MahApps.Metro 0.13.1.0 在窗口标题栏中添加一个“刷新”按钮。

我的 App.xaml 是这样的:

<Application x:Class="VersionSwitcher.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="Views/MainWindow.xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             d1p1:Ignorable="d"
             xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
                <ResourceDictionary Source="/Resources/Icons.xaml" />
            </ResourceDictionary.MergedDictionaries>
            <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:VersionSwitcher.ViewModel" />
        </ResourceDictionary>
    </Application.Resources>
</Application>

然后在我的 MainWindow.xaml 中:
<Controls:MetroWindow.WindowCommands>
    <Controls:WindowCommands>
        <Button ToolTip="{x:Static p:Resources.Button_Refresh}"
                Style="{DynamicResource MetroCircleButtonStyle}" Width="30" Height="30">
                <Rectangle Fill="Black">
                    <Rectangle.OpacityMask>
                        <VisualBrush Stretch="Fill"
                                     Visual="{DynamicResource appbar_refresh}" />
                    </Rectangle.OpacityMask>
                </Rectangle>
        </Button>
    </Controls:WindowCommands>
</Controls:MetroWindow.WindowCommands>

我在标题栏中看到一个灰色圆圈,但没有图标!任何图标(来自 Resources/Icons.xaml)都做同样的事情。

如果图标被放置在窗口内容而不是标题栏中,它会做同样的事情。

我错过了什么?

谢谢 !

更新

我发现为 Rectangle 设置宽度和高度会显示图标。我必须怎么做才能始终填充按钮?

最佳答案

你看不到它,因为Rectangle ActualWidth 的大小为 0和 ActualHeight您可以通过 Snoop 查看

如果您对评论中提到的 WPF 不太了解,请先熟悉 Snoop。很棒的工具,可以让您免于许多头疼的时刻:)

enter image description here

所以用简单的英语,我们添加一个 RectangleContentButton .现在按钮有一些尺寸尺寸。然而 Rectangle 没有,因此以 0 结束。如果它是一些文本,它将获得隐式大小。

所以要排序,给矩形一个合适的宽度/高度。

如果您希望 Rectangle 与 Button 的大小相同,则可以对 Width 和 Height 使用 RelativeSource Binding 以从按钮中获取它。但是,在您的情况下,它是一个已经使用椭圆的样式按钮,因此需要一些填充。

MahApps.Metro 来自 github :

ButtonsExample.xaml

显示他们建议的方法:(显式大小小于父按钮的内容)

<Button Width="50"
        Height="50"
        Margin="0, 10, 0, 0"
        Style="{DynamicResource MetroCircleButtonStyle}">
    <Rectangle Width="20"
                Height="20"
                Fill="{Binding Path=Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}">
        <Rectangle.OpacityMask>
            <VisualBrush Stretch="Fill"
                          Visual="{DynamicResource appbar_city}" />
        </Rectangle.OpacityMask>
    </Rectangle>
</Button>

关于wpf - MahApps.Metro 图​​标未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244461/

相关文章:

c# - 从类运行 MySQL 查询时抛出异常

.net - 如何根据来自转换器的数据对 WPF 数据网格进行排序?

c# - 在 WPF/C# 中使用全局键盘钩子(Hook) (WH_KEYBOARD_LL)

c# - MahApps Flyout Close 命令和 Is Open 未正确绑定(bind)

wpf - 当 "IsMouseOver"wpf Mahapps 时更改按钮颜色

WPF 切换开关 : how to add Win 10 style

c# - C# WPF MVVM 应用程序的启动顺序

.net - 什么是 String.Format 的 WPF XAML 数据绑定(bind)等效项?

c# - 如何在 Mahapps Metro 输入框中指定插入符位置?

c# - 如何在鼠标悬停时突出显示 MahApps.Metro 的图 block ?