如何在现代 window wpf 中设置表单图标

How to set form icon in modern window wpf

我正在使用现代 UI 模板开发 Visual Studio 2013 WPF 应用程序。 当我设置表单图标然后调试时,出现错误:

这是我的源代码:

<mui:ModernWindow x:Class="DieuBeni002.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mui="http://firstfloorsoftware.com/ModernUI"
    Title="mui" IsTitleVisible="True"
    LogoData="F1 M 24.9015,43.0378L 25.0963,43.4298C 26.1685,49.5853 31.5377,54.2651 38,54.2651C 44.4623,54.2651 49.8315,49.5854 50.9037,43.4299L 51.0985,43.0379C 51.0985,40.7643 52.6921,39.2955 54.9656,39.2955C 56.9428,39.2955 58.1863,41.1792 58.5833,43.0379C 57.6384,52.7654 47.9756,61.75 38,61.75C 28.0244,61.75 18.3616,52.7654 17.4167,43.0378C 17.8137,41.1792 19.0572,39.2954 21.0344,39.2954C 23.3079,39.2954 24.9015,40.7643 24.9015,43.0378 Z M 26.7727,20.5833C 29.8731,20.5833 32.3864,23.0966 32.3864,26.197C 32.3864,29.2973 29.8731,31.8106 26.7727,31.8106C 23.6724,31.8106 21.1591,29.2973 21.1591,26.197C 21.1591,23.0966 23.6724,20.5833 26.7727,20.5833 Z M 49.2273,20.5833C 52.3276,20.5833 54.8409,23.0966 54.8409,26.197C 54.8409,29.2973 52.3276,31.8106 49.2273,31.8106C 46.127,31.8106 43.6136,29.2973 43.6136,26.197C 43.6136,23.0966 46.127,20.5833 49.2273,20.5833 Z"          
    ContentSource="/Pages/Home.xaml" Icon="logo.png" >

<mui:ModernWindow.MenuLinkGroups>
    <mui:LinkGroup DisplayName="welcome">
        <mui:LinkGroup.Links>
            <mui:Link DisplayName="home" Source="/Pages/Home.xaml" />
        </mui:LinkGroup.Links>
    </mui:LinkGroup>
    <mui:LinkGroup DisplayName="settings" GroupKey="settings">
        <mui:LinkGroup.Links>
            <mui:Link DisplayName="software" Source="/Pages/SettingsPage.xaml" />
        </mui:LinkGroup.Links>
    </mui:LinkGroup>
</mui:ModernWindow.MenuLinkGroups>

<mui:ModernWindow.TitleLinks>
    <mui:Link DisplayName="settings" Source="/Pages/SettingsPage.xaml" />
    <mui:Link DisplayName="help" Source="https://github.com/firstfloorsoftware/mui" />
</mui:ModernWindow.TitleLinks>

当我删除 "Icon" 属性时,调试工作正常但没有图标出现在 Windows 任务栏中。 请帮助我

我发现在代码隐藏中设置图标 属性 更容易。

例如

public partial class MainWindow 
    : ModernWindow
{
    public MainWindow()
    {
        InitializeComponent();
        Icon = DieuBeni002.Properties.Resources.logo.ToImageSource();
    }
}

我们需要转换徽标,因为它返回为 System.Drawing.Bitmap 类型,而 Icon 需要 System.Windows.Media.ImageSource 类型。

internal static class IconUtilities
{
    public static ImageSource ToImageSource(this Bitmap bitmap)
    {
        if (bitmap == null) throw new ArgumentNullException("bitmap");

        return Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
    }
}

P.S。 要从图标类型转换,您可以使用建议解释 here