我正在主窗口和任务栏上开发一个带有相同图标的应用程序。
因此,我将图标添加到“资源”列表并链接到主窗口:
<Window x:Class="MGWUpdater.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:xxxxxx"
mc:Ignorable="d"
Title="xxxxxx" Height="283.333" Width="260"
ResizeMode="CanMinimize" Icon="Resources/icon.ico">
然后我通过这种方式创建了NotifyIcon
:
public NotifyIcon ni = new NotifyIcon();
但我不知道如何将我的Icon分配给我刚创建的NotifyIcon
。我试过这个,但它不起作用:
ni.Icon = new Icon("Resources/icon.ico");
答案 0 :(得分:1)
您必须将您的图标添加到资源列表中。然后您必须将属性项目的使用添加到XAML文件中:
xmlns:res="clr-namespace:nameProject.Properties">
当然,如果图标保存在资源文件中,则必须转换图标。您只需要在XAML代码中添加转换类:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
<conv:ImageConverter x:Key="ImageConverter" />
</ResourceDictionary>
</UserControl.Resources>
您可以绑定资源元素,Image,等等:
<Image HorizontalAlignment="Center"
VerticalAlignment="Top"
Source="{Binding Source={x:Static res:Resources.close},
Converter={StaticResource ImageConverter}}"/>
这是ImageConverter转换类(必须将其添加到Binding中):
public class ImageConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
MemoryStream ms = new MemoryStream();
((System.Drawing.Bitmap)value).Save(ms, System.Drawing.Imaging.ImageFormat.Png);
BitmapImage image = new BitmapImage();
image.BeginInit();
ms.Seek(0, SeekOrigin.Begin);
image.StreamSource = ms;
image.EndInit();
return image;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
我提供了这个帮助!
答案 1 :(得分:0)
你可以试试这个
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(
"<project namespace>.<folder path>" + "filename.ico"))
{
notifyIcon.Icon = new Icon(stream);
}
或者
public NotifyIcon ni = new NotifyIcon();
ni.Icon = (Icon)this.FindResource("icon.ico");
答案 2 :(得分:0)
经过一段时间的研究,我找到了解决方案。要引用Resources
库中的任何资源,只需使用下一个代码:
Properties.Resources.your_resource
例如,在我的代码中,我只使用下一行代码:
ni.Icon = Properties.Resources.icon;
感谢您的回答!