2009-06-12 3 views
1

Я использую значок в своем приложении в двух ситуациях.Вставить иконку в приложение WPF

  1. В XAML как изображение для кнопки с использованием DynamicResource.
  2. В C#, как NotifyIcon

    this.notifyIcon.Icon = новый SystemDrawing.Icon ("..//..// Shutdown.ico");

Моя проблема: если я удалю изображение, приложение не работает. Как связать образ с exe-файлом, чтобы приложение могло работать только с файлом exe?

ответ

2

Добавить иконку в проект как ресурс (не Внедренный ресурс, есть разница), то доступ к нему с

using(Stream stream = Application.GetResourceStream(new Uri("/Shutdown.ico")).Stream) 
{ 
    this.notifyIcon.Icon = new SystemDrawing.Icon(stream); 
} 

Вы также должны затем иметь возможность использовать его в XAML я тоже пока еще не помню.

Смотрите здесь для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/aa970494.aspx

Примечания: я не включил какие-либо проверки ошибок здесь. Вероятно, вы должны убедиться, что вы проверяете поток, чтобы увидеть, имеет ли он значение null перед его использованием.

+0

Когда я использую я получил ошибку Ошибка \t \t 1 Не удается неявно преобразовать тип «System.Windows.Resources.StreamResourceInfo» до «System.IO.Stream» – Sauron

+1

я пропустил вызов .Stream на конце GetResourceStream () вызов. Вы смотрели StreamResourceInfo, чтобы узнать, где я ошибся? Вы не собираетесь никуда копировать код, не выясняя, как это работает. –

0

Последний раз, когда мне это нужно, изображение было настолько простым, что проще было просто создать линейный рисунок в XAML (аналогично SVG) вместо использования файла. Я пытался создать простой мастер в стиле Vista без повторного использования чей-либо кода (чтобы убедиться, могу ли я это сделать), и мне нужна стрелка командной кнопки, как видно из UX guidelines на MSDN.