Как установить фоновое изображение для рамки? - PullRequest
3 голосов
/ 12 января 2012

Я знаю, в этой статье они устанавливают цвет фона, используя следующие шаги. Мне было интересно, есть ли способ использовать изображение вместо цвета. Я попробовал следующее, но это не сработало:

ImageBrush brush = new ImageBrush();
brush.ImageSource = 
new BitmapImage(new Uri("/MyApp;component/Images/Backgrounds/myimage.jpg"));
Rootframe.Background = brush;

Кто-нибудь видел, возможно ли это? Или это ограничено цветами?

Ответы [ 3 ]

5 голосов
/ 12 января 2012

Я решил пойти и заставить его работать. Единственный улов - это обходной путь, поскольку кажется, что с событием ImageOpened наблюдается странное поведение По сути, ImageOpened событие Brush не вызывается, когда вы назначаете фон для рамки. Как ни странно, он вызывается, когда вы назначаете его элементу. Поэтому я просто создал скрытую кнопку и назначил ей кисть (чтобы вызвать событие ImageOpened). Я тогда назначил это к структуре, и это работает для меня. Похоже, ошибка, но обходной путь ниже работает для меня.

ImageBrush brush = new ImageBrush();

brush.ImageSource = new BitmapImage(new Uri("/myImage.jpg", UriKind.Relative));
//hide the fake button and set the brush to be its background
button1.Visibility = System.Windows.Visibility.Collapsed;
button1.Background = brush;

//assign it to the frame (or using RootFrame in your case)
var frame = App.Current.RootVisual as PhoneApplicationFrame;
frame.Background = brush;
4 голосов
/ 14 декабря 2012

Использование

RootFrame.Background = App.Current.Resources["MainBackground"] as ImageBrush;

работает для меня.Вам понадобится следующее в вашем словаре ресурсов в App.xaml

<ImageBrush x:Key="MainBackground" ImageSource="/resources/MainBackground.jpg" />
1 голос
/ 12 января 2012

Установите CreateOption на None или BackgroundCreation и дождитесь загрузки изображения:

 BitmapImage image = new BitmapImage(new Uri("/MyApp;component/Images/Backgrounds/myimage.jpg"))
 {
      CreateOptions = System.Windows.Media.Imaging.BitmapCreateOptions.None
 };
 image.ImageOpened += (s, e) =>
 {
      brush.ImageSource = image;
      App.RootFrame.Background = brush;
 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...