Использование изображений и значков в WPF - PullRequest
10 голосов
/ 09 апреля 2011

Я пытаюсь использовать Icon в своем приложении WPF и некоторые изображения для других целей, но я продолжаю получать ошибки из представления Designer View, говоря что-то вроде «path-x не является допустимым ресурсом или не может быть найден». - где «путь-х» - это путь к любому изображению, которое я пытаюсь использовать.

Если бы он искал в правильном месте, держу пари, он бы его нашел;)

НО, тогда он решил больше не давать мне эту ошибку. Итак, я пошел дальше и нажал Run (F5), чтобы увидеть мой новый значок в строке заголовка. Только чтобы столкнуться с этим зверем:

"System.Windows.Markup.XamlParseException произошло сообщение = 'предоставить значение на 'System.Windows.Baml2006.TypeConverterMarkupExtension' бросил исключение. Строка № 5 и позиция строки '50'.
Источник = PresentationFramework
LineNumber = 5 LinePosition = 50
Трассировки стека: в System.Windows.Markup.XamlReader.RewrapException (Исключение e, IXamlLineInfo lineInfo, Uri BaseUri) в System.Windows.Markup.WpfXamlLoader.Load (XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings настройки, Uri baseUri) в System.Windows.Markup.WpfXamlLoader.LoadBaml (XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri) в System.Windows.Markup.XamlReader.LoadBaml (Stream поток, ParserContext parserContext, Родительский объект, логическое значение closeStream) в System.Windows.Application.LoadComponent (Object компонент, Uri resourceLocator) в One_Stop_Management.MainWindow.InitializeComponent () в c: \ Users \ Jason \ Documents \ Visual Studio 2010 \ Проекты \ One Stop Управление \ Одна остановка Управление \ MainWindow.xaml: строка 1 в One_Stop_Management.MainWindow..ctor () в C: \ Users \ Jason \ Documents \ Visual Studio 2010 \ Проекты \ One Stop Управление \ Одна остановка Управление \ MainWindow.xaml.cs: строка 25 InnerException: System.IO.IOException Сообщение = Невозможно найти ресурс 'images / favicon.ico'. Источник = PresentationFramework Трассировки стека: в MS.Internal.AppModel.ResourcePart.GetStreamCore (FileMode режим доступа к FileAccess) в System.IO.Packaging.PackagePart.GetStream (FileMode режим доступа к FileAccess) в System.IO.Packaging.PackWebResponse.CachedResponse.GetResponseStream () в System.IO.Packaging.PackWebResponse.GetResponseStream () в System.IO.Packaging.PackWebResponse.get_ContentType () в System.Windows.Media.Imaging.BitmapDecoder.SetupDecoderFromUriOrStream (Uri URI, потоковый поток, BitmapCacheOption cacheOption, Guid & clsId, Boolean & isOriginalWritable, Stream & uriStream, UnmanagedMemoryStream & unmanagedMemoryStream, SafeFileHandle & safeFilehandle) в System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream (Uri baseUri, Uri uri, Стрим стрим, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache) в System.Windows.Media.Imaging.BitmapFrame.CreateFromUriOrStream (Uri baseUri, Uri uri, Стрим стрим, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy) в System.Windows.Media.ImageSourceConverter.ConvertFrom (ITypeDescriptorContext контекст, КультураИнфо культура, Объект значение) в System.Windows.Baml2006.TypeConverterMarkupExtension.ProvideValue (IServiceProvider поставщик услуг) в MS.Internal.Xaml.Runtime.ClrObjectRuntime.CallProvideValue (MarkupExtension я, IServiceProvider, сервис провайдер) InnerException: "

Exception at runtime while trying to use an icon for my titlebar!

Почему эта вещь дает мне отношение? Я просто пытаюсь вставить изображение ...

Обновления

Вот XAML, созданный для значка, когда я пытался добавить значок с помощью панели свойств:

<Fluent:RibbonWindow x:Class="One_Stop_Management.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:Fluent="clr-namespace:Fluent;assembly=Fluent"
        Title="One Stop Management" Height="727" Width="1208" Icon="Resources\favicon.ico">

Последнее обновление

enter image description here

Я даже не могу добавить значок, используя панель свойств, ниже приведена ошибка, которую он мне дает.

Ответы [ 10 ]

5 голосов
/ 28 февраля 2012

Убедитесь, что целью является ресурс.Затем сделайте что-то вроде этого:

Icon="/MobilWPF;component/Resources/Images/MobileIcon.ico"

где MobilWPF - это ваше пространство имен, или, может быть, вы имя проекта?Я забыл, что имя моего проекта и мое пространство имен совпадают.

2 голосов
/ 04 июня 2013

Я исправил эту же проблему, установив следующие свойства для изображения:

Build Action = Content
Copy to Output Directory = Copy always
2 голосов
/ 28 февраля 2012

Я обнаружил, что VS2008 иногда вызывает подобные проблемы, когда вы добавляете новые ресурсы, а затем перестраиваете проект.Я обнаружил, что если вы очистите сборку, а затем восстановите ее заново, проблема исчезнет.Похоже, ошибка VS2008 для меня.

1 голос
/ 16 июня 2014

Установка BuildAction в Resource в ресурсе Properties решила эту проблему.

Greets

1 голос
/ 03 января 2013

Я вспоминаю похожую ситуацию, когда мое приложение зависало, и я в итоге отследил его до ошибки .ico.

Если вы используете значки и Windows XP, XP не поддерживает значки 256x256.Возможно, вам потребуется открыть значок в редакторе, например IcoFx, и удалить значок 256x256.

1 голос
/ 28 февраля 2012

Ответ зависит от того, где и как вы храните значок. Я пытался сделать что-то похожее на ответ @ iterationx , но у меня это не сработало, и на этом я закончил. Я использую VS 2010.

Я добавил значок в качестве ресурса через страницу свойств проекта, в разделе Ресурсы, Добавить ресурс (раскрывающийся список), Добавить существующий файл. Тогда я просто использовал имя файла в свойстве Icon:

Icon="my_icon.ico"
1 голос
/ 09 апреля 2011

Исключение, если вы прочитали его, говорит то же самое:

InnerException: System.IO.IOException Message = Не удается найти ресурс 'images / favicon.ico'.

Вероятно, это связано с тем, что изображение значка Images/favicon.ico настроено неправильно.Убедитесь, что для параметра Build Action установлено значение «Resource» и что оно находится в проекте в папке «Images».

1 голос
/ 09 апреля 2011

Извините, я не могу быть более полезным. При чтении вашего вопроса сначала я подумал, что это будет просто несоответствие типов, например, когда вы указали строку, когда она должна была быть изображением. Похоже, что проблема имеет несколько возможных решений. Вместо того, чтобы перечислять их все, я просто свяжу вас со страницей Microsoft Connect, на которой они есть .

0 голосов
/ 09 июля 2013

используйте Icon = ". \ Images \ test.ico" это заставило меня работать

0 голосов
/ 03 декабря 2011

У меня была такая же проблема, и я обнаружил, что если в вашем проекте есть пробел в имени, он не будет правильно читать файлы изображений.Надеюсь, это поможет.

...