UWP 以编程方式更改 XAML 页面 C# 的背景图像

Sta*_*ats 5 c# xaml background image uwp

我已经搜索了一段时间,老实说我还没有解决这个非常简单的问题。我有一个弹出菜单,并且已将一个事件附加到弹出菜单项。我想在选择该项目时以编程方式更改 XAML 页面的背景图像。

<Grid x:Name="main">
    <Grid.Background>
        <ImageBrush Stretch="Fill" ImageSource="Assets/bg_1.jpg"/>
    </Grid.Background>
</Grid>
Run Code Online (Sandbox Code Playgroud)

这是我作为背景获得的默认图像(网格基本上是整个页面)。

C# 事件代码在这里:

private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)
{
    main.Background = new ImageBrush { ImageSource = new BitmapImage(new Uri("ms-appx:///MTG Life Counter/Assets/bg_2.jpg")) , Stretch = Stretch.None};
}
Run Code Online (Sandbox Code Playgroud)

当我选择菜单项而不是将图像设置为背景时,它会使其变为白色。

默认背景

我测试了一下,不是图像问题。我知道我正在做一些类似明显错误的事情,但我对 UWP 有点陌生,我找不到解决方案。

这是我选择更改后的空白背景

感谢您的宝贵时间,并对我的无知表示歉意。

Dar*_*lar 4

有一个名为“BaseUri”的属性...尝试将其添加到您的代码中。

进行以下更改:

    private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)
    {
        main.Background = new ImageBrush { ImageSource = new BitmapImage(new Uri(this.BaseUri, "Assets/bg_2.jpg")), Stretch = Stretch.None };
    }
Run Code Online (Sandbox Code Playgroud)