【问题标题】:Inserting image child into grid not showing [duplicate]将图像子插入网格不显示[重复]
【发布时间】:2020-01-04 04:12:44
【问题描述】:

我正在尝试将 WPF 图像动态插入到网格中。我目前有一些代码已经这样做了,它遍历 URL 列表,然后从该 URL 获取图片并创建图像,然后将其插入到指定位置的网格中。

但是,我几个月前编写了此代码,此后我忘记了如何正确执行此代码。回顾我的代码,我已经将相关的 sn-ps 复制到一个新的测试方法中,用于调试目的。 “lite”版本的代码会清除网格的所有 Children 和 RowDefinition,然后创建一个新的 RowDefinition 和一个 Image。然后它将图像插入到行中。

RowDefinition def = new RowDefinition
{
    Height = new GridLength(400)
};

myGrid.RowDefinitions.Add(def);

Image img = new Image
{
    Source = new BitmapImage(new Uri(@"folderpath/myimage.png", UriKind.Relative)), 
    Margin = new Thickness(0, 5, 0, 5)
};

Grid.SetRow(img, 0);
Grid.SetColumn(img, 0);

myGrid.Children.Add(img);

但是当这段代码运行时,它什么也没有产生。网格内没有任何内容。

应该注意的是,在我的 Visual Studio 项目中,我有一个文件夹“文件夹路径”,其中包含在构建项目时复制的一堆图像。如果我将 myimage.png 添加到 VS 内部的项目中,并在上面运行代码 sn-p 一切正常。图像被创建并放置在网格内。

但是,如果我在构建之前没有将myimage.png 添加到 VS 项目中,而是使用 Windows 资源管理器将文件复制到正确的目录,然后运行代码,它就不起作用。这让我相信这可能是一个目录问题,但在测试 Environment.CurrentDirectory 时,它符合预期。

我现在很茫然,为什么只有在构建之前将其添加到我的VS项目中时才会出现图像,而不是在构建完成后手动将其添加到文件夹时出现?

感谢您的帮助

【问题讨论】:

  • 您是否复制到构建输出文件夹下的folderpath,例如到bin\Debug\folderpath?如果你有一个 URL 列表,为什么不直接从这些 URL 加载图像?

标签: c# wpf


【解决方案1】:

我之前遇到过类似的问题,图像显示在 XML 编辑器中,但没有显示代码何时运行。这实际上是预期的行为。

这是因为在编辑器中它会得到链接,即使它没有包含在项目中。但是,当您构建代码时,它不会显示项目中未包含的任何内容。最佳做法是在您的项目中有一个 img 或资源文件夹,您可以在其中放置所有相关资源。

【讨论】:

    猜你喜欢
    • 2016-06-27
    • 2015-08-23
    • 2014-05-15
    • 2018-08-03
    • 1970-01-01
    • 2017-08-10
    • 2021-12-07
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多