【问题标题】:Visual C#: Metro app change background (Programmatically)Visual C#:Metro 应用程序更改背景(以编程方式)
【发布时间】:2014-02-25 20:19:03
【问题描述】:

C#中是否有改变当前页面(或网格)背景的函数?

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> */
}

【问题讨论】:

    标签: c# xaml windows-8 windows-store-apps


    【解决方案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;
    

    【讨论】:

    • 谢谢。我还有一个问题 - Visual Studio 给我一个错误,我无法将 BitmapImage 转换为 ImageSource。我忘了什么吗?
    • 该代码没有错误。如果您丢失某物或某物编码错误,请检查您的代码。
    • 我检查了我的代码是否有错误,但我找不到任何错误。我在void写了这段代码,我也没有导入LayoutRoot,因为我找不到命名空间,你能发一下吗?。
    • LayoutRoot 是您的网格的名称。根网格。
    【解决方案2】:

    试试这个代码:

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

    grd 是您的网格名称。

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 2011-03-07
      相关资源
      最近更新 更多