2016-07-06 9 views
-1

У меня есть аа WrapPanel в моем 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(); 

Я не получаю никаких ошибок во время компиляции но моя обложка остается пустой, и я не могу понять, почему.

Я использую почти тот же код на другой странице, чтобы генерировать Checkbox-Controls, и он работает нормально.

Может ли кто-нибудь, пожалуйста, дать мне подсказку, что я делаю неправильно?

+1

Вы пытались удалить привязку в свойстве Width) (иногда мне случалось, что элемент управления был фактически скомпенсирован, и именно по этой причине было невозможно увидеть элементы управления внутри). Почему вы не используете ViewModel (например, с помощью элемента ItemsControl)? – bastio84

+0

Вы уверены, что столбец «nr» является varchar, а не числом? – CiccioRocca

+0

Ваша строка обложки не содержит всего имени файла, ей не хватает расширения, посмотрите в проводнике решений для полного пути имени файла вашего изображения. –

ответ

2

Если столбец Н.Р. это число это должно исправить ваш запрос:

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

Вы рассматриваете его как строку а не как число (вы используете символ в свой запрос).

+1

Вот и все. Большое спасибо :-) – mykds

0

Моя первая догадка что ваш первоначальный Read() должен быть удален

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

Это тоже было правильно. Спасибо – mykds

Смежные вопросы