Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.02.2023
Сообщений: 83

Разместить коллекцию объектов на Canvas

20.12.2024, 08:25. Показов 2528. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Элд Хасп,
Здравствуйте. Вопрос хочу адресовать Вам. Если будет не сильно затруднительно
Как можно решить такую задачу в рамках шаблона MVVM
Вот что есть:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class TA
{
......
public List<TB> B = new();
 
.....
}
 
 
public class TB
{
......
public Image image;
 
.....
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Window .....................">
    <Grid Margin="10">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
 
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="10*" />
            <ColumnDefinition Width="268*" />
            <ColumnDefinition Width="40*" />
        </Grid.ColumnDefinitions>
        
..........................
В процессе работы программы периодически создаются экземпляры классов TA и TB. То есть при запуске программы их может и не существовать. Как только появляется экземпляр то Image из класса должен сразу отобразиться на экране
Я бы в лоб стал его программно в коде С# его создавать...
Как это реализовать в MVVM. Я посмотрел Ваш пример из ссылки... но не понял. Никогда я интерфейсы и event_ы не использовал...
Ладно бы это, но мне нужно будет чтобы пользователь мог передвигать картинку и это положение запоминалось(это у меня реализовано - любые параметры Image я храню в классе TB и сохраняю в файл - их как то нужно получить только из формы )
в XAML рекомендуется же относительность, можно на Canvas.... вроде как..

Как мне сделать класс VewModel?
Как сделть привязку, если вначале Image вообще не существует..
И мои классы модели (TА и ТВ) мне нужно сохранить...
Надеюсь я написал понятно....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2024, 08:25
Ответы с готовыми решениями:

Как получить коллекцию элементов Canvas
У меня на форме есть Canvas, в нем есть около 26 * 4 Image. Вообщем мне нужно перебрать эти Image's при этов в предыдущем убрать...

В каком Control лучше всего разместить коллекцию картинок?
Здравствуйте, столкнулся я с проблемой - надо разместить коллекцию картинок, но не знаю в каком Control править шаблон. Имеется база...

Canvas html5, как разместить черный пискель в центре canvas'a?
как разместить черный пискель в центре canvas'a?

26
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
24.01.2025, 10:44
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от userstm2023 Посмотреть сообщение
Я оставил загрузку имен файлов картинок из file.xml как оно и есть в реальности..
Это норм.
Даже SQLite - норм.
Главное чтобы не серверная БД или WEB IP были.

Добавлено через 11 минут
Цитата Сообщение от userstm2023 Посмотреть сообщение
Я забыл их туда положить...
Скиньте ещё раз общим архивом или отдельно сами картинки.

Цитата Сообщение от userstm2023 Посмотреть сообщение
\bin\Release\net6.0-windows\P
Это неверное расположение для картинок. Это расположение Сборки.
Они должны быть в Проекте.
А в Сборку их должен поместить компилятор.
0
0 / 0 / 0
Регистрация: 15.02.2023
Сообщений: 83
24.01.2025, 13:41  [ТС]
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
А где сам файл
Каталог P будет находится в корневом каталоге приложения *.exe. В этот каталог пользователь будет складывать картинки
чтобы заменить дефолтовые, если они ему не понравятся. Дефолтовые картинки раньше хранились в ресурсах приложения и были внутри exe файла (Win32 API было приложение)
файл file.xml рядом с exe-шником - это конфигурация приложения, которая содержит, в том числе, имена файлов картинок.
При запуске приложения эти имена считываются и загружаются в поля классов.
Когда пользователь открывает нужное окно файлы загружаются в Image и отображаются в окне. Если задано имя файла, то ищется файл в каталоге P если имя умолчания то загружается из ресурсов.
Первоначально файла конфигурации вообще может не существовать.
Как это всё сделать в парадигме MVVM ?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
24.01.2025, 21:13
Цитата Сообщение от userstm2023 Посмотреть сообщение
Каталог P будет находится в корневом каталоге приложения *.exe.
Это папка сборки.
Но вы же сначала пишите исходные коды.
А исходные коды - это Проект.
Если файлы должны быть в Сборке, то сначала нужно поместить их в Проект.
Это нужно чтобы потом не получать неожиданных багов.

Для понимания различий, самый простой способ: Создайте в Студии Репозиторий с ваши Решением. А потом клонируйте его в соседнюю папку и попробуйте запустить.
Только обязательно в Студии создавайте Репозиторий - тогда будут правильные настройки у него. Вашего опыта для собственноручного задания настроек не хватит.

Но это "лирика".
Дополните сейчас Решение недостающими файлам. Чтобы запустив его можно было что-т увидеть из того что вы описываете.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
25.01.2025, 16:24
userstm2023, чуть поглубже я влез в проект.....
Жесть.
Там очень многое надо переделывать.
И начинать надо с само низу - с Модели.

Исправлять "по верхушкам", когда неверная архитектура приложения в целом - это как "мёртвому припарка" .
0
0 / 0 / 0
Регистрация: 15.02.2023
Сообщений: 83
27.01.2025, 07:33  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Жесть
А что Вам не нравится. Там особо никакой архитектуры нет. Я всё упростил и убрал.
Структура классов с данными отображает то что есть на самом деле в системе.

Добавлено через 12 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Дополните сейчас Решение недостающими файлам. Чтобы запустив его можно было что-т увидеть из того что вы описываете.
ок...допишу код для вывода картинок без MVVM чтобы было понятно... но будет не быстро
спасибо
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
27.01.2025, 13:32
Цитата Сообщение от userstm2023 Посмотреть сообщение
А что Вам не нравится. Там особо никакой архитектуры нет. Я всё упростил и убрал.
Два самых главных нарушения:
1) Прокидываете в классы уровня VM (если даже е Модели) UI контролы, непосредственно там ими управляете.
2) Используете публичные поля, а не свойства. Просто забудьте о существовании публичных полей - это рудимент от "младенчества" Шарпа оставленный для совместимости.

И более мелкие: нет привязок, нет уведомлений об изменении, используете XMLDocument вместо сериализации и т.д.

Добавлено через 47 секунд
userstm2023, написал вам в личку.
Ответьте там.
0
0 / 0 / 0
Регистрация: 15.02.2023
Сообщений: 83
30.01.2025, 09:38  [ТС]
wpf2.rar
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2025, 09:38

JAXB создание XML файла по коллекции объектов и считывание из XML в коллекцию объектов
Здравствуйте, такая проблема, изучаю JAXB пытаюсь понять как можно реализовать чтобы объекты из разных классов добавлялись в 1 XML файл, и...

Как разместить текст на Canvas?
я столкнулся с проблемой программного размещения текста в контейнере Canvas... не могу найти как программно прикрепить(не создать)...

Создать коллекцию объектов
Доброго времени суток. Сдаю академ.разницу. Дали задание : создать коллекцию (контейнер) объектов , при этом с возможностью добавлять,...

Создать коллекцию объектов класса
Есть код класса, все вроде работает. Но, теперь мне необходимо каким-то образом создать несколько экземпляров класса и, допустим, среди...

Класс содержащий коллекцию объектов
class Registry { private: vector&lt;Patient&gt; patients; vector&lt;Doctor&gt; doctors; vector&lt;Appointment&gt; appointments; ...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru