2013-03-25 93 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

從哪裏可以獲得網絡服務的天氣代碼?在該代碼中,獲取當前天氣,然後根據預測設置背景圖片。