堆栈面板内的图像未能显示

5

我正在动态地在gridview单元格内创建stackpanel,并在其中放置一张图片控件,但窗口上只出现空白区域,没有图片。
这是我所做的:

StackPanel Stkpnl = new StackPanel();

Image BgImg = new Image();
BitmapImage Img = new BitmapImage(new Uri(
    "Images/cellbg.png", UriKind.Relative));
BgImg.Source = Img ;

Stkpnl.Children.Add(BgImg );

1
你尝试过调试来查看Img是否已加载 - 你是否已将StackPanel添加到可视树中? - Charleh
1
可能是在代码中设置WPF图像源的重复问题。 - secretgenes
3个回答

2
你需要使用Pack URI。请参见https://dev59.com/x3RC5IYBdhLWcg3wSu57#1651397
如果你不知道自己的Pack URI应该怎么写,可以先在WPF页面上临时添加一个Image控件,然后进入Source属性并点击“…”按钮,浏览到你的图像位置。属性文本框中将显示Pack URI。

0
StackPanel Stkpnl = new StackPanel();
Image BgImg = new Image();    
String packuri = "pack://application:,,,/yourassemblyname;component/cellbg.png";
BgImg.Source = new ImageSourceConverter().ConvertFromString(packuri) as ImageSource;

Stkpnl.Children.Add(BgImg );

提示:在Visual Studio 2012中查找程序集名称,请转到菜单栏中的“项目” ->“设置属性” ->“应用程序”。


0

你的代码似乎是正确的,你检查过图片是否存在于文件夹中或相对路径是否正确了吗?如果你后来将这个图片添加到图片文件夹中,那么你必须将图片的“生成操作”设置为“资源”。右键单击解决方案资源管理器中的图像,然后你可以设置此属性。

你还应该检查这个问题

在代码中设置WPF图像源


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接