Почему свойство источника изображения XAML содержит компонент "/MyApp;"?

Я разрабатываю приложение для Windows Phone.

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

<Image x:Name="GameImage" Margin="8" Source="/MyApp;component/Assets/Icons/GameImage.png"/>

Почему я получаю "/MyApp;component/..."? (Есть ли лучший способ?)

Если я пытаюсь сделать Image.Source="Assets/Icons/GameImage.png", почему он не работает?

Ответ 1

Это связано с тем, что на вашем изображении установлено действие сборки Ресурс (это значение по умолчанию). Если вы переключите его на Контент, вы можете установить источник в своем XAML следующим образом:

<Image x:Name="GameImage" Margin="8" Source="/Assets/Icons/GameImage.png"/>

Чтобы установить его в коде, вы можете сделать это:

BitmapImage tn = new BitmapImage();
tn.SetSource(Application.GetResourceStream(new Uri(@"Assets/Icons/GameImage.png", UriKind.Relative)).Stream);
Image.Source = tn;

Вы должны использовать контент по соображениям производительности. См. Эту статью для более подробной информации: http://www.windowsphonegeek.com/tips/wp7-working-with-images-content-vs-resource-build-action

Ответ 2

Любой контент, помеченный как внедренный ресурс, загружается из сборки. Таким образом, сайты использования должны знать, указать сборку, в которую встроен ресурс. В вашем случае это MyApp.

Ответ 3

Не забудьте добавить:

using System.Windows.Media.Imaging;

BitmapImage tn = new BitmapImage();
tn.SetSource(Application.GetResourceStream(new Uri(@"Assets/Icons/GameImage.png", UriKind.Relative)).Stream);
Image.Source = tn;

Ответ 4

Вы можете использовать:

BitmapImage obj = new BitmapImage();
obj.UriSource = new Uri(mera_image.BaseUri,file.Path);