2014-02-25 129 views
1

C#中是否有更改當前頁面(或網格)的背景的函數?Visual C#:Metro應用程序更改背景(以編程方式)

C#:

int hourOfDay = DateTime.Now.Hour; 
if(hourOfDay <= 12 && hourOfDay >= 18) { 
    /* Set background to afternoon_bg.jpg 
    * 
    * In XAML: 
    * <Grid.Background> 
    *  <ImageBrush ImageSource="/Assets/afternoon_bg.jpg" Stretch="UniformToFill" /> 
    * </Grid.Background> */ 
} 
if(hourOfDay <= 6 && hourOfDay >= 12) { 
    /* Set background to morning_bg.jpg 
    * 
    * In XAML: 
    * <Grid.Background> 
    *  <ImageBrush ImageSource="/Assets/morning_bg.jpg" Stretch="UniformToFill" /> 
    * </Grid.Background> */ 
} 

回答

1

LayoutRoot是網格的名字,你可以設置背景是這樣的:

int hourOfDay = DateTime.Now.Hour; 
    ImageBrush ib = new ImageBrush(); 
    if(hourOfDay >= 12 && hourOfDay < 18) { 
     ib.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/afternoon_bg.jpg", UriKind.Relative)); 
    } 
    else if (hourOfDay >= 6 && hourOfDay < 12) 
    { 
     ib.ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/morning_bg.jpg", UriKind.Relative)); 
    } 
    else 
    { 
     // do something 
    } 
    LayoutRoot.Background = ib; 
+0

謝謝。我還有一個問題 - Visual Studio給了我一個錯誤,我無法將'BitmapImage'轉換爲'ImageSource'。我忘了什麼嗎? – KeksArmee

+0

我沒有錯誤的代碼。請檢查你的代碼,如果你失去了某事或編碼錯誤。 –

+0

我檢查了我的代碼錯誤,但我找不到任何。我在'void'中編寫了這段代碼,我也沒有導入'LayoutRoot',因爲我找不到名稱空間,請問您可以發佈它嗎? – KeksArmee

1

試試這個代碼:

ImageBrush ib = new ImageBrush(); 
ib.ImageSource = new BitmapImage(new Uri(@"\Pictures\profile.jpg", UriKind.Relative)); 
grd.Background = ib; 

grd是網格的名字。

相關問題