通过代码将图像添加到 Wrappanel

Adding Image to Wrappanel by code

我的 WPF 中有一个 Wrappanel,例如:

<DockPanel x:Name="dockpnlCollection_Covers" HorizontalAlignment="Center" Grid.Row="0" Grid.Column="0" LastChildFill="False" Margin="0" >
            <WrapPanel x:Name="wpnlCollection_Covers" Orientation="Vertical" MinWidth="520" VerticalAlignment="Top" HorizontalAlignment="Left" Height="Auto" Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ScrollViewer}}, Path=ActualWidth}"></WrapPanel>
        </DockPanel>

我的 c#-代码如下所示:

for (int x = 0; x <= nmbr; x++)
            {
                cmddb.CommandText = "SELECT cover FROM movies Where nr = '" + x + "'";
                dbreader.Read();
                while (dbreader.Read())
                {
                    coverpath = (string)dbreader["cover"];
                    System.Windows.Controls.Image newIMG = new System.Windows.Controls.Image();
                    newIMG.Margin = new System.Windows.Thickness { Left = 6, Top = 5, Right = 6, Bottom = 5 };
                    newIMG.Source = new BitmapImage(new Uri(coverpath));
                    wpnlCollection_Covers.Children.Add(newIMG);
                }
            }

            dbreader.Close();

我在编译时没有遇到任何错误,但我的 wrapppanel 保持空白,我不明白为什么。

我在另一个页面上使用几乎相同的代码来生成复选框控件,它工作得很好。

谁能告诉我我做错了什么?

我的第一个猜测是你的初始 Read() 应该被删除

        cmddb.CommandText = "SELECT cover FROM movies Where nr = '" + x + "'";
        //dbreader.Read(); // is it wrong, maybe?
        while (dbreader.Read())

如果第 nr 列是一个数字,这应该可以解决您的查询:

cmddb.CommandText = "SELECT cover FROM movies Where nr = " + x.ToString();

您将其视为字符串而不是数字(您在查询中使用了 ' 字符)。