Я просто изучаю C# и изо всех сил пытаюсь работать с URI в WPF. Я искал пару слов, но не имел большой удачи.C# WPF URI синтаксис
По существу, я пытаюсь иметь объект BitmapImage, сохраненный как свойство в объекте Car. Затем я хочу отобразить BitmapImage в элементе управления Image в форме WPF.
Приложение представляет собой простое приложение (это для назначения Uni), так что нет базы данных и т.д.
У меня есть два способа сделать это. Во-первых, я предварительно загружаю данные Car из текстового файла, включая имя файла JPG, который я хочу загрузить. Я включил JPG в каталог под названием «Файлы», который находится за пределами основного каталога, где хранятся мои исходные тексты и файлы классов. Я установил JPG-файл в «Содержимое» и «Всегда копировать». Когда я запускаю Debug, он копирует каталог Files и JPG в каталог debug \ bin.
Мой код создает BitmapImage, ссылаясь на JPG, используя URI следующим образом;
BitmapImage myImage = new BitmapImage (new Uri("Files/" + Car.Imagefilename, UriKind.Relative);
Car.Image = myImage;
ImageControl.Source = myImage;
Если я пошагово этот код в отладчике, он иногда работает и отображает изображение, но большую часть времени он не делает.
Мой второй метод - это когда пользователь создает новый автомобиль. Этот метод всегда работает. В этом я использую диалоговое окно файла (dlg), чтобы выбрать изображение и использовать абсолютный путь.
BitmapImage myImage = new BitmapImage (new Uri(dlg.Filename, UriKind.Absolute);
Car.Image = myImage;
ImageControl.Source = myImage;
Так что я не могу понять, почему первый метод не работает. Я думаю, что это связано с относительной ссылкой, но я не могу понять, как правильно синтаксически работать. Я пробовал использовать «pack: ,,,», я попытался добавить «компонент», я попробовал «@» перед «пакетом». Кажется, я не могу найти что-то, что объясняет это просто.
Извините, если это прямо, но это делает мою голову! Цените любые указатели.
Большое вам спасибо! Это сработало. Я работаю с полным путем, а затем использовал AppDomain.CurrentDomain.BaseDirectory. Я знал, что это будет просто! –
Это очень хороший Ник. Но теперь у вас есть зависимость от структуры папок, которая может быть не идеальной.Рассмотрите возможность сохранения пути к изображениям на вашем App.Config и загрузке его оттуда. Таким образом, если ваши пользователи решают, что они хотят перемещать изображения на отдельный сервер, все, что вам нужно сделать, это изменить файл конфигурации, и ваша система продолжит работу. В любом случае я рад, что это сработало для вас –