Программный способ загрузки ресурсов в WPF - PullRequest
2 голосов
/ 12 октября 2011

Загрузить изображение в XAML очень просто:

<Image Source="Resources/Images/pic.png" />

Интересно, есть ли простой способ сделать это программно? Я нашел следующее решение (потратил полдня):

Uri uri = new Uri("pack://application:,,,/" + 
  Assembly.GetExecutingAssembly().FullName +
  ";component/Resources/Images/pic.png", UriKind.Absolute);
BitmapImage img = new BitmapImage(uri);
Image im = new Image();
im.Source = img;
Grid.SetColumn(im, 1);
grid.Children.Add(im);

Как по мне, это выглядит некрасиво и очень по-COM. Он не имеет никакого смысла в библиотеке классов .NET FCL (тщательно и тщательно продуманной). Почему мы должны использовать строки вроде: "pack: ..."? Перечисления намного лучше (своего рода Ресурсы. Местные).

Я надеюсь, что есть более элегантный способ сделать эту работу. Спасибо.

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Почему вы не можете присвоить значение «img» свойству «Имя» и попробовать это из кода в строке?
img.Source = new BitmapImage (new Uri ("pack: // application: ,,, / Koala.jpg"));

0 голосов
/ 12 октября 2011

Элегантный способ - это сам XAML. :-)

.... Что касается кода, он тоже может быть элегантным ...

        var img
            = new Image()
                  {
                      Source =
                          (new ImageSourceConverter()).ConvertFrom(
                            "Resources/Images/pic.png") as
                                ImageSource
                  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...