我正在使用WPF NotifyIcon,实际上我正在尝试学习如何在系统托盘中显示简单的NotifyIcon。实际上在MainWindow
我把这段代码:
private TaskbarIcon tb;
public MainWindow()
{
InitializeComponent();
}
private void MetroWindow_StateChanged(object sender, EventArgs e)
{
if (WindowState == WindowState.Minimized)
{
tb = (TaskbarIcon)FindResource("TestNotifyIcon");
}
}
基本上当主窗口最小化时,tb应该显示在字典中声明的Icon,如下所示:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:PrimoCalendarExport.Utils.Resources.UIDictionary"
xmlns:tb="http://www.hardcodet.net/taskbar">
<tb:TaskbarIcon x:Key="TestNotifyIcon"
IconSource="/Utils/Images/Test.ico"
ToolTipText="hello world" />
</ResourceDictionary>
此资源字典位于文件夹内,特别是:
Project name
\Utils
\Resources
\Dictionary
\InlineToolTip.xaml
现在的问题是,当我最小化主窗口时,我得到了这个错误:
ResourceReferenceKeyNotFoundException
似乎TestNotifyIcon
无法在项目中找到。我不知道我做错了什么,我按照教程的所有步骤,有人可能知道我的错误?感谢。
答案 0 :(得分:1)
看来你正在寻找资源的错误位置。您正在查看metro window
的XAML但是您应该在main window
XAML中查找程序,使用以下内容查找程序:(我目前不在Visual Studio上)
private void MetroWindow_StateChanged(object sender, EventArgs e)
{
if (WindowState == WindowState.Minimized)
{
tb = (TaskbarIcon)this.FindResource("TestNotifyIcon");
}
}
或
private void MetroWindow_StateChanged(object sender, EventArgs e)
{
if (WindowState == WindowState.Minimized)
{
tb = (TaskbarIcon)MainWindow.FindResource("TestNotifyIcon");
}
}