|
3 / 3 / 0
Регистрация: 27.05.2020
Сообщений: 26
|
||||||
WPF Получить объект из Grid27.05.2020, 00:56. Показов 7185. Ответов 50
Метки нет (Все метки)
Здравствуйте, направьте пожалуйста куда копать. Третий день бьюсь не могу понять, как мне получить объект при клике мышью на форму с Grid. Пытаюсь сделать по правилам MVVM.
Есть Grid, привязанный к массиву объектов. Как мне при клике на клетку с объектом получить ссылку на этот объект? Гугл с яндексом уже боятся меня, я их задолбал запросами, но ничего похожего найти не могу. Нужно вывести инфу по объекту находящемуся в клетке Grida куда я кликнул. Инфу то я выведу, но как мне получить объект по клику мыши я никак не могу понять ![]() Мой XAML:
P.S. Сильно не пинайте, я только учусь
0
|
||||||
| 27.05.2020, 00:56 | |
|
Ответы с готовыми решениями:
50
Возможно ли задать в XAML число строк и столбцов Grid сразу, без исп <Grid.ColumnDefinitions> и <Grid.RowDefinnitions>? Получить элемент из Grid по строке и столбцу Получить данные о Grid |
|
3 / 3 / 0
Регистрация: 27.05.2020
Сообщений: 26
|
||
| 28.07.2020, 15:42 [ТС] | ||
|
https://github.com/Mobile02/NaturalSelection
0
|
||
|
WPF Разработчик
463 / 167 / 42
Регистрация: 20.02.2018
Сообщений: 285
|
||||||
| 28.07.2020, 16:05 | ||||||
|
Mobile02, источник ссылка
в ItemsControl добавить:
Вы, кстати, допустили в это ошибку, в <DataTemplate DataType="{x:Type user:ViewModelBio}">, Grid.Row надо было указать для Button. Будьте внимательны
2
|
||||||
|
3 / 3 / 0
Регистрация: 27.05.2020
Сообщений: 26
|
|
| 28.07.2020, 16:11 [ТС] | |
|
0
|
|
|
Модератор
|
|
| 28.07.2020, 16:38 | |
|
Mobile02!
1) прочитайте пост Присоединённые свойства (Attached Property) для всплывающей привязки из шаблонов данных к Canvas и Grid. 2) разберитесь как добавлять проекты в решение и ссылаться на них. Проект с исправлениями в архиве.
2
|
|
|
Модератор
|
||||||
| 28.07.2020, 16:41 | ||||||
|
И сами по себе эти шаблоны вызывают большие сомнения
Очень вероятно, что вы выбрали неверный элемент для Представления. Добавлено через 1 минуту Несколько шаблонов одинаковых. Отличаются только цветом. Надо сделать для них общий базовый тип и цвет переключать триггером.
1
|
||||||
|
3 / 3 / 0
Регистрация: 27.05.2020
Сообщений: 26
|
|||
| 28.07.2020, 16:44 [ТС] | |||
|
Спасибо за помощь!
0
|
|||
|
3 / 3 / 0
Регистрация: 27.05.2020
Сообщений: 26
|
|||||||
| 29.07.2020, 17:29 [ТС] | |||||||
0
|
|||||||
|
Модератор
|
||
| 30.07.2020, 00:47 | ||
|
Надо просто в VM передать диспетчер, и обновлять ObservableCollection через диспетчер. Добавлено через 21 секунду Поищите по форуму - масса тем по этому вопросу.
0
|
||
|
3 / 3 / 0
Регистрация: 27.05.2020
Сообщений: 26
|
|||||||
| 30.07.2020, 17:26 [ТС] | |||||||
Я сделал проще, просто у тех элементов что не нужны, меняю координаты на -1. Может это и костыль, но так все работает и не тормозит, осталось только как то скрыть их с экрана (сейчас они все кучкуются в координатах 0, 0). А это опять в XAML лезть в котором я толком не понимаю ничего.
0
|
|||||||
|
WPF Разработчик
463 / 167 / 42
Регистрация: 20.02.2018
Сообщений: 285
|
|
| 30.07.2020, 19:36 | |
|
Mobile02, Вам не надо обновлять коллекцию! У Вас привязаны позиции X и Y, если хотите переместить ячейку -- меняйте ей эти координаты. Если хотите поменять цвет ячейки то ищите её по координатам и меняйте в ней цвет
0
|
|
|
Модератор
|
|||||||||||||||||||||||||
| 30.07.2020, 20:45 | |||||||||||||||||||||||||
|
Но не во всех сборках доступен класс Application. Поэтому предпочтительней передать диспетчер в конструктор VM
А в Code Behind App или Window
Сама коллекция для автообновления WPF-представления обязательно должна реализовывать INotifyCollectionChanged. Из дефолтных Net коллекция, самая простая с INCC это ObservableCollection<T>. Изменение свойств элемента не считается обновлением коллекции. Для обновления WPF представления после изменения свойств элемента, тип элемента должен реализовывать INotifyPropertyChanged и уведомлять об изменении свойства через этот итнтерфейс. Добавлено через 2 минуты Для исключения случайных ошибок, свойство-коллекция типа ObservableCollection лучше реализовывать "ТОЛЬКО ДЛЯ ЧТЕНИЯ":
Добавлено через 5 минут Mobile02, но я не могу дать вам примера реализации поскольку не разбирался как из engine вы получаете нужные данные.При удалении и добавлении элементов в ObservableCollection привязанный к нему UI элемент удаляется и потом создаётся новый. Это значительно добавляет вычислительную нагрузку. Изменение же свойств элемента, только изменяет привязанные свойства уже существующего UI элемента. Это обходится многократно "дешевле".
1
|
|||||||||||||||||||||||||
|
3 / 3 / 0
Регистрация: 27.05.2020
Сообщений: 26
|
|||||||||
| 31.07.2020, 08:32 [ТС] | |||||||||
|
Добавлено через 37 минут
0
|
|||||||||
|
Модератор
|
||||||||
| 31.07.2020, 13:55 | ||||||||
WorldMap.Insert - да.А свойство WorldMap сделайте ТОЛЬКО ДЛЯ ЧТЕНИЯ.
worldMap - удалите.Добавлено через 2 минуты Поэтому не забудьте перевести исполнение метода RefreshMap в Диспетчер.Как задавать Диспетчер в VM я уже постом выше показывал.
0
|
||||||||
|
3 / 3 / 0
Регистрация: 27.05.2020
Сообщений: 26
|
||
| 31.07.2020, 13:58 [ТС] | ||
|
0
|
||
|
3 / 3 / 0
Регистрация: 27.05.2020
Сообщений: 26
|
||
| 31.07.2020, 15:01 [ТС] | ||
|
0
|
||
|
Модератор
|
||
| 31.07.2020, 15:03 | ||
|
Потому, что по коду ошибок не вижу. Может они вне предоставленного вами кода.
1
|
||
| 31.07.2020, 15:03 | |
|
Как получить доступ к данным в Grid? Работа с чужим окном. WinApi получить данные из Grid Как получить ссылку на выбранную строку не в Grid, а в связанной таблице? Как получить строку и столбец элемента из grid через код? Не могу прикрутить bindingnavigator к grid, которая связана с другой grid Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|