NotifyIcon上的ResourceReferenceKeyNotFoundException

时间:2016-05-11 10:52:47

标签: c# wpf 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");
      }
 }

基本上当主窗口最小化时,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无法在项目中找到。我不知道我做错了什么,我按照教程的所有步骤,有人可能知道我的错误?感谢。

1 个答案:

答案 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");
      }
 }