通过C#更改XAML中的图像源

时间:2015-05-14 15:29:17

标签: c# windows xaml grid

所以我有一个网格名称游戏(主游戏板)我想做的是在程序加载时从网格内加载每个图像

foreach(Image myImage in Game.Children)
            {
                BitmapImage bi3 = new BitmapImage();
                bi3.UriSource = new Uri("ms-appx:///Assets/SmallLogo.png");
                myImage.Stretch = Stretch.Fill;
                myImage.Source = bi3;
            }

我正在使用这个foreach但我总是收到错误消息。我尝试了很多不同的方法,但迄今为止都没有。我正在尝试制作一个匹配的记忆游戏。  提前致谢

2 个答案:

答案 0 :(得分:0)

Grid的子项是StackPanel,而不是Image本身。您可能需要深入挖掘StackPanel。如果你也分享你的XAML,它会更容易分辨,但我猜这些图像类似于StackPanel中其中一个内容的datacontext。

如果您仍然遇到问题,请分享XAML

答案 1 :(得分:0)

在检查了你提供的XAML后,问题非常明显。您正在迭代网格的所有子节点并隐式地将它们转换为Image,但其中一个子节点是StackPanel,这是您发生异常的地方。您应首先检查孩子是否是图像:

foreach (var child in Game.Children)
{
    var myImage = child as Image;
    if (myImage == null)
    {
        continue;
    }
    BitmapImage bi3 = new BitmapImage();
    bi3.UriSource = new Uri("ms-appx:///Assets/SmallLogo.png");
    myImage.Stretch = Stretch.Fill;
    myImage.Source = bi3;
}