На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> C# WPF ListView столбик картинок , Картинки из папки
    Подскажите пожалуйста как сделать чтобы отображалась и картинка и название файла
    Прикреплённый файлПрикреплённый файл______2.png (10,7 Кбайт, скачиваний: 663)
    Сообщение отредактировано: kms -
      Сделал вот так
      ExpandedWrap disabled
        private void Button_Click(object sender, RoutedEventArgs e)// нажали кнопку "Выбрать папку с картинками"
                {
                 FolderBrowserDialog fBD = new  FolderBrowserDialog(); // создаем диалог выбора папки
                 DialogResult result = fBD.ShowDialog();               // показываем окно диалога выбора папки
                    if (!string.IsNullOrWhiteSpace(fBD.SelectedPath))  // если выбрали папку
                    {
                        textBox1.Text  = fBD.SelectedPath ;  // показываем путь к выбранной папке
         
                        foreach (string pf in Directory.GetFiles(fBD.SelectedPath)) // перебираем все файлы в выбранной папке
                        {
                            Image image = new Image();
                            image.Height = 100;
                            image.Source = new BitmapImage(new Uri(pf));
                            
                            ListView1.Items.Add(image);
                        }
                    }
                }


      в первом столбике картинки показывает, теперь не знаю как добавить второй столбик с текстом (имя файла)
      Прикреплённый файлПрикреплённый файл______4.png (76,24 Кбайт, скачиваний: 644)
        ExpandedWrap disabled
          <Image Source="{Binding DisplayedImagePath}" HorizontalAlignment="Left"
              Margin="0,0,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Bottom"
              Grid.Row="8" Width="200"  Grid.ColumnSpan="2" />


        ExpandedWrap disabled
          public string DisplayedImage
          {
              get { return @"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg"; }
          }
          Спасибо , но как мне теперь , папки с картинками каждый раз новые в зависимости какую пользователь выберет

          Добавлено
          Цитата Koss @
          <Image Source="{Binding DisplayedImagePath}" HorizontalAlignment="Left"
             Margin="0,0,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Bottom"
             Grid.Row="8" Width="200"  Grid.ColumnSpan="2" />


          а куда это вставить , и как ?
            Цитата kms @
            а куда это вставить , и как ?

            В xaml, тока переделай там биндинг.

            Добавлено
            Цитата kms @
            Спасибо , но как мне теперь , папки с картинками каждый раз новые в зависимости какую пользователь выберет

            ну типа коллекцию создаёшь, обновляешь её в методе, и каждый раз NotifyPropertyChanged
              не получается , но у меня во втором посте посмотри уже все готово , осталось только как то вывести во втором столбике текст
              Сообщение отредактировано: kms -
                Нашел решение https://ru.stackoverflow.com/questions/8430...у/843737#843737 от EvgeniyZ

                немного упростил


                ExpandedWrap disabled
                  <ListView x:Name="ListView2" ItemsSource="{Binding Images}" Margin="558,105,0,374" HorizontalAlignment="Left" Width="358">
                              <ListView.View>
                                  <GridView>
                   
                                      <GridViewColumn Width="140" Header="Изображение">
                                          <GridViewColumn.CellTemplate>
                                              <DataTemplate>
                                                  <Image Source="{Binding Path}" MaxHeight="100" Stretch="UniformToFill"/>
                                              </DataTemplate>
                                          </GridViewColumn.CellTemplate>
                                      </GridViewColumn>
                   
                                      <GridViewColumn Width="200" Header="Название" DisplayMemberBinding="{Binding Name}"  />
                   
                                  </GridView>
                              </ListView.View>
                          </ListView>


                ExpandedWrap disabled
                  public ObservableCollection<ImageViewModel> Images { get; set; } = new ObservableCollection<ImageViewModel>();
                   
                  private void Button_Click(object sender, RoutedEventArgs e)// нажали кнопку "Выбрать папку с картинками"
                  {
                   FolderBrowserDialog fBD = new  FolderBrowserDialog(); // создаем диалог выбора папки
                   DialogResult result = fBD.ShowDialog();               // показываем окно диалога выбора папки
                   
                   if (!string.IsNullOrWhiteSpace(fBD.SelectedPath))  // если выбрали папку
                   {
                                  textBox1.Text  = fBD.SelectedPath ;  // показываем путь к выбранной папке
                                  
                                  foreach (string pf in Directory.GetFiles(fBD.SelectedPath)) // перебираем все файлы в выбранной папке
                                  {
                                       Images.Add(new ImageViewModel(pf, pf));
                                  }
                                  
                                  ListView2.ItemsSource = Images;
                   
                   }
                  }
                   
                  public class ImageViewModel  
                  {  
                          public ImageViewModel(string name, string path)    
                          {
                              Name = name;
                              Path = path;
                          }
                   
                          public string Name { get; set; }
                          public string Path { get; set; }
                  }
                  кмс, всё говно. Удоляй!

                  Делай с нуля по пунктам.
                  2) создай вьюшку.
                  1) viewmodel. главный( с методами работы с коллекцией ImageViewModel ) и ImageViewModel, чтоб они наследовались от INotifyPropertyChanged
                  Сообщение отредактировано: Koss -
                    Koss ОК пробую , 2) создай вьюшку. - это в смысле создаю на форме элемент ListView1

                    да создал

                    1) viewmodel. главный( с методами работы с коллекцией ImageViewModel ) и ImageViewModel, чтоб они наследовались от INotifyPropertyChanged
                    -
                    как это выразить в коде
                      Тебе сначала две вьюмодельки нужно создать. Главная MainViewModel и изображений ImageViewModel.

                      Добавлено
                      это классы, раелизующие INotifyPropertyChanged
                      Сообщение отредактировано: Koss -
                        Koss
                        вот так ?
                        ExpandedWrap disabled
                          public class ImageViewModel
                          {
                              public ImageViewModel(string name, string path)
                              {
                                  Name = name;
                                  Path = path;
                              }
                           
                              public string Name { get; set; }
                              public string Path { get; set; }
                          }
                           
                          public class MainViewModel
                          {
                              public ObservableCollection<ImageViewModel> Images { get; set; } = new ObservableCollection<ImageViewModel>();
                           
                              public MainViewModel()
                              {
                                  var dir = Directory.GetFiles("D:\\Images", "*.jpg");
                                  foreach (var file in dir)
                                  {
                                      var fileInfo = new FileInfo(file);
                                      Images.Add(new ImageViewModel(fileInfo.Name, fileInfo.FullName));
                                  }
                              }
                          }
                          почитай о INotifyPropertyChanged

                          Добавлено
                          и зачем он нужен.
                            Цитата Koss @
                            почитай о INotifyPropertyChanged


                            Пускай лучше про интерфейсы и абстракцию почитает... Походу, он не понимает что ты ему говоришь...
                              ОК читаю, а форумы тогда для чего, я думал чтобы таким балбесам как я подсказывали, не будет вопросов не будет и форумов
                                Что бы не бросать тему не законченной, объединив и упростив выкинув все лишнее, и не погружаясь в патерны , получилось вот такое,
                                может кому пригодится если кого заинтересует чирканите на вопросы отвечу , исходники выложу, критика приветствуется
                                https://github.com/vovakms/Chat
                                Прикреплённый файлПрикреплённый файл______.png (103,43 Кбайт, скачиваний: 624)
                                Сообщение отредактировано: kms -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0535 ]   [ 21 queries used ]   [ Generated: 28.03.24, 22:36 GMT ]