Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.126.241] |
|
Сообщ.
#1
,
|
|
|
Подскажите пожалуйста как сделать чтобы отображалась и картинка и название файла
Прикреплённый файл______2.png (10,7 Кбайт, скачиваний: 668) |
Сообщ.
#2
,
|
|
|
Сделал вот так
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 Кбайт, скачиваний: 648) |
Сообщ.
#3
,
|
|
|
<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" /> public string DisplayedImage { get { return @"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg"; } } |
Сообщ.
#4
,
|
|
|
Спасибо , но как мне теперь , папки с картинками каждый раз новые в зависимости какую пользователь выберет
Добавлено Цитата 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" /> а куда это вставить , и как ? |
Сообщ.
#5
,
|
|
|
Цитата kms @ а куда это вставить , и как ? В xaml, тока переделай там биндинг. Добавлено Цитата kms @ Спасибо , но как мне теперь , папки с картинками каждый раз новые в зависимости какую пользователь выберет ну типа коллекцию создаёшь, обновляешь её в методе, и каждый раз NotifyPropertyChanged |
Сообщ.
#6
,
|
|
|
не получается , но у меня во втором посте посмотри уже все готово , осталось только как то вывести во втором столбике текст
|
Сообщ.
#7
,
|
|
|
Нашел решение https://ru.stackoverflow.com/questions/8430...у/843737#843737 от EvgeniyZ
немного упростил <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> 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; } } |
Сообщ.
#8
,
|
|
|
кмс, всё говно. Удоляй!
Делай с нуля по пунктам. 2) создай вьюшку. 1) viewmodel. главный( с методами работы с коллекцией ImageViewModel ) и ImageViewModel, чтоб они наследовались от INotifyPropertyChanged |
Сообщ.
#9
,
|
|
|
Koss ОК пробую , 2) создай вьюшку. - это в смысле создаю на форме элемент ListView1
да создал 1) viewmodel. главный( с методами работы с коллекцией ImageViewModel ) и ImageViewModel, чтоб они наследовались от INotifyPropertyChanged - как это выразить в коде |
Сообщ.
#10
,
|
|
|
Тебе сначала две вьюмодельки нужно создать. Главная MainViewModel и изображений ImageViewModel.
Добавлено это классы, раелизующие INotifyPropertyChanged |
Сообщ.
#11
,
|
|
|
Koss
вот так ? 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)); } } } |
Сообщ.
#12
,
|
|
|
почитай о INotifyPropertyChanged
Добавлено и зачем он нужен. |
Сообщ.
#13
,
|
|
|
Цитата Koss @ почитай о INotifyPropertyChanged Пускай лучше про интерфейсы и абстракцию почитает... Походу, он не понимает что ты ему говоришь... |
Сообщ.
#14
,
|
|
|
ОК читаю, а форумы тогда для чего, я думал чтобы таким балбесам как я подсказывали, не будет вопросов не будет и форумов
|
Сообщ.
#15
,
|
|
|
Что бы не бросать тему не законченной, объединив и упростив выкинув все лишнее, и не погружаясь в патерны , получилось вот такое,
может кому пригодится если кого заинтересует чирканите на вопросы отвечу , исходники выложу, критика приветствуется https://github.com/vovakms/Chat Прикреплённый файл______.png (103,43 Кбайт, скачиваний: 628) |