如何在代码中设置 Icon 属性?如何理解 XAML 中的完成方式?

发布于 2024-08-07 04:23:41 字数 183 浏览 4 评论 0原文

当我通过设计器为 wpf 窗口选择图标时,我得到以下 XAML:

<Window Icon="/MyNameSpace;component/myIcon.ico">

请为我解释一下这个符号!

假设我想在后面的代码中设置图标。如何将 XAML 转换为 C#?

When I choose an Icon for a wpf Window through the designer I get the following XAML:

<Window Icon="/MyNameSpace;component/myIcon.ico">

Please explain this notation for me!

Say I want to set the Icon in the code behind. How do I translate the XAML to C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

何必那么矫情 2024-08-14 04:23:41

经过多次尝试和错误,我发现下面的代码可以工作,但不可否认的是,我并没有完全理解它:

var window=new Window();
var uri=new Uri("pack://application:,,,/MyAssembly;component/Icon.ico",
                 UriKind.RelativeOrAbsolute));
// var uri=new Uri("icon.ico",UriKind.Relative) works just as well
window.Icon = BitmapFrame.Create(uri);

After much trial and error I found the code below to work, admittedly without comprehending it fully:

var window=new Window();
var uri=new Uri("pack://application:,,,/MyAssembly;component/Icon.ico",
                 UriKind.RelativeOrAbsolute));
// var uri=new Uri("icon.ico",UriKind.Relative) works just as well
window.Icon = BitmapFrame.Create(uri);
羞稚 2024-08-14 04:23:41

这就是“pack URI 方案”。您可以在 MSDN 上找到更多相关信息: http://msdn.microsoft.com /en-us/library/aa970069.aspx

在代码隐藏中,您可以编写以下内容:

BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri("pack://application:,,,/MyNamespace;component/myIcon.ico");
bitmap.EndInit();
this.Icon = bitmap;

请注意,“MyNamespace”部分实际上不是命名空间(因为资源不是代码,所以它不是有命名空间),但程序集名称。

This is the "pack URI scheme". You can find more about it on MSDN: http://msdn.microsoft.com/en-us/library/aa970069.aspx

In code-behind, you could write the following :

BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri("pack://application:,,,/MyNamespace;component/myIcon.ico");
bitmap.EndInit();
this.Icon = bitmap;

Note that the "MyNamespace" part isn't actually the namespace (since a ressource is not code, it doesn't have a namespace), but the assembly name.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文