С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 13.11.2020
Сообщений: 59
1

Динамическое выведение изображений в ЭУ Image посредством массива строк(ссылок) через ViewModel

03.01.2025, 03:31. Показов 169. Ответов 1

Author24 — интернет-сервис помощи студентам
Суть моей деятельности: работа с эксель, получение строки через совпадение. При получении названий иозбражений хочу вывести их в окно. Кол-во неограниченно

Не могу найти ошибку:
или привязку делаю не правильную
или разметка не дает вывести
или какая-то непонятная мне ошибка
Паттерн MVVM
Происходит генерация стринговых ссылок, которую передаю в элемент управления Image
Ради собственного интереса взял одну ссылку и сделал абсолютную привязку - работает! Ссылка генерируется правильно!
Суть моей идеи : динамика выведения : количество ссылок в массиве строк = количеству изображений в разметке

Тут показываю вам код CS ViewModel
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
internal class MainWindowViewModel : INotifyPropertyChanged
{
    private string search;
    public string Search
    {
        get { return search; }
        set
        {
            search = value;
            OnPropertyChanged();
        }
    }
 
    private Person findPerson;
    public Person FindPerson
    {
        get { return findPerson; }
        set
        {
            findPerson = value;
            OnPropertyChanged();
        }
    }
 
    // Для медиа
    private ObservableCollection<BitmapImage> images = new ObservableCollection<BitmapImage>();
    public ObservableCollection<BitmapImage> Images
    {
        get { return images; }
        set { 
            images = value; 
            OnPropertyChanged("Images"); 
        }
    }
    private ObservableCollection<string>pictures = new ObservableCollection<string>();
    public ObservableCollection<string> Pictures
    {
        get { return pictures; }
        set { pictures = value; OnPropertyChanged("Pictures"); }
    }
 
    private string mediaSource; // Источник медиа
    public string MediaSource
    {
        get { return mediaSource; }
        set
        {
            mediaSource = value;
            OnPropertyChanged();
        }
    }
 
    private RelayCommand searchCommand;
    public RelayCommand SearchCommand
    {
        get
        {
            return searchCommand ?? (searchCommand = new RelayCommand(obj =>
            {
                Search search = new Search();
                FindPerson = search.SearchInformation(Search);
                LoadMediaInformation();
            }));
        }
    }
 
    private RelayCommand loadMediaCommand;
    public RelayCommand LoadMediaCommand
    {
        get
        {
            return loadMediaCommand ?? (loadMediaCommand = new RelayCommand(obj =>
            {
                LoadMediaInformation();
            }));
        }
    }       
    public void LoadMediaInformation()
    {           
        Person person = FindPerson;
(Для эксперемента пытаюсь сначала просто подать одну статическую ссылку)
        person.MediaInformation = "C:\\Users\\Дмитрий Иванов\\Desktop\\Fiber Search People Project\\FIBER 7 Upgraded version\\Data\\MediaInformation\\098723456.jpg";
 
        string sourceMedia = person.MediaInformation;
        string[] mediaInformationArray = sourceMedia.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(url => url.Trim()).ToArray();
        Pictures=new ObservableCollection<string> (mediaInformationArray.ToArray());
       
        
        if (mediaInformationArray.Length > 0)
        {
            Pictures.Clear();
 
            foreach (var mediaUrl in mediaInformationArray)
            {
                try
                {
                    //var image = new BitmapImage(new Uri(mediaUrl));
                    Pictures.Add(mediaUrl);
                    MessageBox.Show($"Success");
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Ошибка загрузки изображения: {ex.Message}");
                }
            }
        }
        
    }
 
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] string prop = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
    }
Тут код разметки

XML
1
2
3
4
5
6
7
 <ItemsControl ItemsSource="{Binding Pictures}" Height="500">
     <ItemsControl.ItemTemplate>
         <DataTemplate>
             <Image Source="{Binding }" Height="300" Width="347"/>
         </DataTemplate>
     </ItemsControl.ItemTemplate>
 </ItemsControl>
Помогите найти ошибку. В предыдущем проекте получилось добиться своего
Изображения имеют свойство как ресурс и копирования
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.01.2025, 03:31
Ответы с готовыми решениями:

Выведение массива изображений путем элемента управления Image
Здравствуйте, уважаемые пользователи форума! На этот раз бросил вызов такой задаче: В ячейке...

Как зарегистрировать ViewModel через Autofac, создав между ViewModel и нужным View DataContext связь?
Доброго времени суток. Есть желание при регистрации ViewModel'и сразу же &quot;подключиться&quot; к...

Загрузка изображений в Базу данных через Image
Ребят, есть Image, реализовал загрузку изображений в него через OpenFileDialog. Но я хочу чтобы это...

При загрузке изображений через Univeral Image Loader видно как они перерисовываются
я загружаю изображения из галереи в RecyclerView. Элемент RecyclerView есть ImageView c width и...

Динамическое обновление элемента Image при изменении Image.Source
Всем доброго дня! Вот уже как неделю бьюсь на над решением проблемы динамического обновления...

1
Модератор
Эксперт .NET
15856 / 11002 / 2855
Регистрация: 21.04.2018
Сообщений: 32,330
Записей в блоге: 2
03.01.2025, 10:53 2
Цитата Сообщение от JAGUAR XS Посмотреть сообщение
Тут показываю вам код CS ViewModel
Есть шероховатости, но ошибок в этом коде нет.
Скорее всего или неверно выделяете строки с путём к изображению, или по этим путям нет изображений.
Если пути относительные, то может быть неверно задана текущая директория. И вообще, советую не использовать относительные пути. Преобразуйте их в абсолютные перед записью в коллекцию.

Шероховатости:
Цитата Сообщение от JAGUAR XS Посмотреть сообщение
C#
27
public ObservableCollection<BitmapImage> Images
BitmapImage - это View тип и его не должно быть в VM.

Цитата Сообщение от JAGUAR XS Посмотреть сообщение
C#
35
36
37
38
39
40
    private ObservableCollection<string>pictures = new ObservableCollection<string>();
    public ObservableCollection<string> Pictures
    {
        get { return pictures; }
        set { pictures = value; OnPropertyChanged("Pictures"); }
    }
Используйте свойство только для чтения:
C#
35
public ObservableCollection<string> Pictures {get;} = new();
Добавлено через 3 минуты
Цитата Сообщение от JAGUAR XS Посмотреть сообщение
C#
86
        Pictures=new ObservableCollection<string> (mediaInformationArray.ToArray());
Лишня строка.
Ниже в цикле эта коллекция перезаписывается.

Добавлено через 1 минуту
Цитата Сообщение от JAGUAR XS Посмотреть сообщение
C#
1
internal class MainWindowViewModel : INotifyPropertyChanged
Используйте базовый класс для упрощения.
Например, BaseInpc отсюда: Простые реализации для тем на форуме
0
03.01.2025, 10:53
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.01.2025, 10:53
Помогаю со студенческими работами здесь

Выведение изображений на экран и все с ним связанное
Доброго всем времени суток. Есть Wpf форма, надо выводить изображение и перемещать его, но все...

Загрузка изображений посредством ajax
Загружаю изображения путем ajax В php скрипте принимаю $image_info = getimagesize($_FILES); Все...

Вставка относительных ссылок в формулу посредством переменных
Добрый день. я который раз возвращаюсь к одной загвоздке в своем макросе и никак не могу ее...

Сжатие изображений посредством фрактальной геометрии
Здравствуйте! Подскажите, пожалуйста, книги по сжатию изображений с помощью фрактальной...

Рандомное выведение строк
Народ подскажите как сделать что бы варианты ответов выводились каждый раз рандомно? ...

Выведение определённых строк
На главной странице (index.cshtml) есть код, отвечающий за вывод строк (заголовок каждой строки) из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru