2013-03-25 92 views
0

我正在开发一个天气应用程序,我想根据天气晴朗,多云等动态更改背景图像。我把从App.xaml.cs所有页面的背景图片如下:Windows商店应用程序:更改背景图像动态代码

rootFrame.Background = new ImageBrush 
      { 
       Stretch = Windows.UI.Xaml.Media.Stretch.UniformToFill, 
       ImageSource = new BitmapImage { UriSource = new Uri("ms-appx:///Assets/blueSky.jpg") } 
      }; 

我设定的图像中App.xaml.cs所以所有的页面得到相同的图像,而我不需要加载每次都有图像。 App.xaml.cs的完整代码:

sealed partial class App : Application 
{ 

    /// <summary> 
    /// Initializes the singleton application object. This is the first line of authored code 
    /// executed, and as such is the logical equivalent of main() or WinMain(). 
    /// </summary> 
    public App() 
    { 
     this.InitializeComponent(); 
     this.Suspending += OnSuspending; 

    } 

    /// <summary> 
    /// Invoked when the application is launched normally by the end user. Other entry points 
    /// will be used when the application is launched to open a specific file, to display 
    /// search results, and so forth. 
    /// </summary> 
    /// <param name="args">Details about the launch request and process.</param> 
    protected async override void OnLaunched(LaunchActivatedEventArgs args) 
    { 
     Frame rootFrame = Window.Current.Content as Frame; 


     // Do not repeat app initialization when the Window already has content, 
     // just ensure that the window is active 
     if (rootFrame == null) 
     { 
      // Create a Frame to act as the navigation context and navigate to the first page 
      rootFrame = new Frame(); 


      // Her we set the application background Image for all pages 
      rootFrame.Background = new ImageBrush 
      { 
       Stretch = Windows.UI.Xaml.Media.Stretch.UniformToFill, 
       ImageSource = new BitmapImage { UriSource = new Uri("ms-appx:///Assets/blueSky.jpg") } 
      }; 
      weather.Common.SuspensionManager.RegisterFrame(rootFrame, "appFrame"); 


      if (args.PreviousExecutionState == ApplicationExecutionState.Terminated) 
      { 
       //TODO: Load state from previously suspended application 
       await weather.Common.SuspensionManager.RestoreAsync(); 
      } 

      // Place the frame in the current Window 
      Window.Current.Content = rootFrame; 
     } 

     if (rootFrame.Content == null) 
     { 
      // When the navigation stack isn't restored navigate to the first page, 
      // configuring the new page by passing required information as a navigation 
      // parameter 
      if (!rootFrame.Navigate(typeof(MainPage), args.Arguments)) 
      { 
       throw new Exception("Failed to create initial page"); 
      } 
     } 
     // Ensure the current window is active 
     Window.Current.Activate(); 
    } 

    /// <summary> 
    /// Invoked when application execution is being suspended. Application state is saved 
    /// without knowing whether the application will be terminated or resumed with the contents 
    /// of memory still intact. 
    /// </summary> 
    /// <param name="sender">The source of the suspend request.</param> 
    /// <param name="e">Details about the suspend request.</param> 
    private async void OnSuspending(object sender, SuspendingEventArgs e) 
    { 
     var deferral = e.SuspendingOperation.GetDeferral(); 
     //TODO: Save application state and stop any background activity 
     await weather.Common.SuspensionManager.SaveAsync(); 
     deferral.Complete(); 
    } 
} 

这适用于1图像,但我不能自动更改图像。有任何想法吗?

+0

您只是在启动应用程序时更改图像。 – 2013-03-25 13:29:03

回答

1

从哪里可以获得网络服务的天气代码?在该代码中,获取当前天气,然后根据预测设置背景图片。