NotifyIcon 上的 ResourceReferenceKeyNotFoundException

ResourceReferenceKeyNotFoundException on NotifyIcon

我正在使用 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");
      }
 }

基本上当主 window 最小化时,tb 应该显示在字典中声明的图标,如下所示:

<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

现在的问题是,当我最小化主 window 时,我得到了这个错误:

ResourceReferenceKeyNotFoundException

似乎无法在项目中找到 TestNotifyIcon。我不知道我做错了什么,我按照教程的所有步骤进行操作,有人可能知道我的错误吗?谢谢。

看来您在错误的位置查找资源。您正在查看 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");
      }
 }