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

Передача данных между viewmodel по кнопке

24.06.2021, 06:44. Показов 9162. Ответов 61

Студворк — интернет-сервис помощи студентам
Добрый день, у меня есть главное window представление Main привязана к MainVM, и есть window представление Accaunt привязана к AccauntVM как мне передать логин из AccauntVM в MainVM по кнопке?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2021, 06:44
Ответы с готовыми решениями:

Передача данных между ViewModel
Добрый день. Вот есть у меня две ViewModel, в одной из них есть ObservableCollection И я хочу из одной ViewModel передать данные в...

Передача данных между ViewModel
Есть окно Window1 в конструкторе вызывает метод OpenCredential() public void OpenCredential() { ...

Передача данных между двумя ViewModel
Задача типовая: есть главное окно, отображающее некий список. Пусть это будут фамилии студентов. После выбора студента и клика по кнопке...

61
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
25.06.2021, 16:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от marat1905 Посмотреть сообщение
синхронизировать эта кнопка?
Нет.
На нижней панели в правом углу:




Или в панели "Изменения Git":


Пункт "Получить" или "Синхронизировать".
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
25.06.2021, 16:36
Цитата Сообщение от marat1905 Посмотреть сообщение
И все ровно есть ошибки почему то у меня
И после синхронизации, надо сделать Сборку.
Сами сборки в Гит не отправляются.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
25.06.2021, 16:53
marat1905, в таком виде как у вас сейчас, вносить изменений надо очень много.
Фактически надо с нуля писать всё заново.

Чтобы сделать "малой кровью" надо объединить MainViewModel и AccauntViewModel.
Потом создать её экземпляр в ресурсах App.
И Окнам получать Контекст Данных из Ресурсов.

Добавлено через 1 минуту
marat1905, и всегда все классы используемые в WPF объявляете ПУБЛИЧНЫМИ.
А то будете ловить проблемы в самых неожиданных местах.

Добавлено через 6 минут
И пришлите архивом рисунки из решения.
А то на них ошибку выдаёт.

Добавлено через 3 минуты
marat1905, и я не пойму как у вас Окна связанны между с собой из данными.
Объясните какое окно когда открывается, какие данные оно должно показывать и т.д.
0
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
25.06.2021, 18:21  [ТС]
Элд Хасп, смотрите когда запускается програама она открывает MainWindow. Сверху в правом углу PopupBox (три точки по вертикали) при нажатии сплывает окошко при нажатии на "Аккаунт" должно появится окно WindowAccaunt. как забиваю данные в этом окне они нажимаю на кнопку "подтвердить". осле нажатия должны эти данные перейти в MainWindow.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
25.06.2021, 18:57
Цитата Сообщение от marat1905 Посмотреть сообщение
осле нажатия должны эти данные перейти в MainWindow.
Куда в MainWindow?

Вот смотрите в MainVM у вас есть коллекция AccauntViewModel и коллекция AccModel.
Для чего они?
Предусматривается работа со всеми акками одновремено?

Но зато в этой VM нет свойства для текущего (авторизированного) пользователя.


Давайте отступим на шаг назад, а то такая свалка в этом Решении.

Начнём с реализации Модели.

Что нам нужно от Модели для начала сеанса?
1) Метод авторизации нужен? У вас сразу начинается с ввода данных.
А логин-пароль не нужны?
2) Для заполнения окна WindowAccaunt нужны списки Начальников смен, лаборантов и смен.
Следовательно для каждого из этих списков должен быть метод в Модели возвращающий причисление соответствующих типов.
3) После нажатия на кнопку "Подтвердить" выбранные данные должны отправься в Модель.
Для это в Модели тоже должен быть соответсвующий метод.
4) Какие результаты возможны после получения выбора?
Всегда принят выбор?
Или нужна какая-то проверка и возможет отказ от принятия этих данных?
5) Из вышесказанного у модели должны быть состояния: авторизации есть/нет, ошибка авторизации есть/нет.

Добавлено через 2 минуты
marat1905, и скиньте архивом рисунки binance.png, Yobit.png, forex.png.
Я их добавлю репозиторий.
А то у меня без них ошибки высвечиваются.
0
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
25.06.2021, 19:30  [ТС]
Элд Хасп,
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Что нам нужно от Модели для начала сеанса?
1) Метод авторизации нужен? У вас сразу начинается с ввода данных.
А логин-пароль не нужны?
Для начала сеанса на нужны данные из WindowAccaunt которая забила лаборантка.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
2) Для заполнения окна WindowAccaunt нужны списки Начальников смен, лаборантов и смен.
Следовательно для каждого из этих списков должен быть метод в Модели возвращающий причисление соответствующих типов.
Да ФИО начальника и лаборантки берутся как раз из базы данных.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
3) После нажатия на кнопку "Подтвердить" выбранные данные должны отправься в Модель.
Для это в Модели тоже должен быть соответсвующий метод.
Данная кнопка не активна пока данные все не проставят. это реализовано у меня. ну как я понял криво наверное раз Вы это не заметили(AccauntViewModel).

эти png. можно удалить я на них тренировался.
Вложения
Тип файла: rar фото.rar (208.6 Кб, 2 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
25.06.2021, 19:39
Цитата Сообщение от marat1905 Посмотреть сообщение
эти png. можно удалить я на них тренировался.
Да мне без разницы рисунки.
Лишь бы ошибки не выдавало, а то разражает.

Цитата Сообщение от marat1905 Посмотреть сообщение
Да ФИО начальника и лаборантки берутся как раз из базы данных.
В бд у вас только таблица UserSmena.
Это общая таблица начальников и лаборантов?
И различаются они позицией?

А список смен откуда берётся?

Добавлено через 56 секунд
Цитата Сообщение от marat1905 Посмотреть сообщение
Данная кнопка не активна пока данные все не проставят. это реализовано у меня
Ну, это ещё рано.
Пока надо с моделью разобраться
0
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
25.06.2021, 20:54  [ТС]
Элд Хасп,
Цитата Сообщение от Элд Хасп Посмотреть сообщение
В бд у вас только таблица UserSmena.
Это общая таблица начальников и лаборантов?
И различаются они позицией?
Да так и есть
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А список смен откуда берётся?
Список смен, дата и дневная ночная смена в AccauntViewModel
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
25.06.2021, 21:04
Цитата Сообщение от marat1905 Посмотреть сообщение
Да так и есть
Позиция (должность) не может же быть произвольной строкой.
Пока чёрт с этим, но потом надо добавить в БД ещё таблицу должностей.
А в UserSmena вместо должности её ид.
0
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
25.06.2021, 21:22  [ТС]
Элд Хасп,
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Позиция (должность) не может же быть произвольной строкой.
Не задумывался я над этим
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
26.06.2021, 18:17
marat1905, сделал фиксацию:
Очень много разных исправлений.
Довёл до более-менее правильной реализации заполнениt коллекции и проверку ошибок.
Но по уму там весь проект надо в топку.
И делать с нуля.
На переделывания уходит в разы больше времени.
0
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
27.06.2021, 14:22  [ТС]
Элд Хасп, Спасибо большое это то что я хотел. А есть маленький проект у Вас где правильно реализовано MVVM паттерн для изучения и не допущения в дальнейшем таких ошибок?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
27.06.2021, 15:25
marat1905, посмотрите в темах по ссылке в подписи моего поста.

Добавлено через 11 минут
Цитата Сообщение от marat1905 Посмотреть сообщение
где правильно реализовано MVVM паттерн для изучения
Здесь даже не в MVVM дело.
В любом ООП Решение (MVC, MVP и т.п.) согласно принципов ООП и SOLID необходимо разделять приложение на функциональные слои.
Один из таких функциональных слоёв содержит Бизнес Логику для работы с реальными данными.
Кроме него во всех остальных слоях нет реальных данных, там только данные их отражающие.
Такой слой принято называть Моделью.

Путаницу вносит ADO и EF - это не паттерны приложения.
Это паттерны программирования одного слоя, типа функции и т.п.
В этих паттернах Моделями называют типы отражающие данные БД.

Что бы вам было понятно, я специально этим типам дал постфикс Entity (Сущность).

Для передачи между слоями принято использовать DTO типы.
Я им дал соответсвующий постфикс.
Так же для этой функции можно использовать все иммутабельные типы, в том числе все значимые дефолтные Net типы и string.
0
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
27.06.2021, 21:03  [ТС]
Элд Хасп, Вы можете добавить коментарии в UsersModel?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
27.06.2021, 21:59
Лучший ответ Сообщение было отмечено marat1905 как решение

Решение

Цитата Сообщение от marat1905 Посмотреть сообщение
можете добавить коментарии в UsersModel?
Сделал фиксацию:
Классы разделены по разным файлам и добавлены комментарии.
1
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
28.06.2021, 09:39
Цитата Сообщение от marat1905 Посмотреть сообщение
Да первые 2 comboboxa не должны были у Вас работать так как они грузятся с sql. а остальные грузятся с VM
Извиняюсь. был далеко от интернета.
Цитата Сообщение от marat1905 Посмотреть сообщение
синхронизировать эта кнопка? И все ровно есть ошибки почему то у меня
Не эта. Думаю проще будет зайти на сайт гитхаб и от туда скачать проект.

А так нужно нажать снизу справа на название проекта. Откроется вкладка, слева будет папка remotes . В ней ветка проекта. Нужно нажать правой и выбрать получить, затем извлечь.

Добавлено через 1 минуту
А вы уже тут все разобрали. Почему то ничего не было пока не отправил)
0
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
13.07.2021, 14:54  [ТС]
Элд Хасп,
у меня есть List при ввходе текста оператором в TextBox вызвать обновление листа

C#
1
2
3
4
5
6
7
8
9
 private List<WeightLab> _WeightLabs = new List<WeightLab>();
        public List<WeightLab> WeightLabs
        {
            get { return _WeightLabs; }
            set
            {
                Set(ref _WeightLabs, value);
            }
        }
в представлении
XML
1
2
3
4
5
6
7
8
9
10
11
<Grid Grid.Row="1" DataContext="{Binding WeightLabs, Mode=TwoWay}">
<TextBox  Grid.Column="0" 
                                  Grid.Row="0" 
                                      PreviewTextInput="PreviewTextdoubleInput"
                                  FontSize="13" 
                                  Margin="1" 
                                  TextAlignment="Center"
                                  Style="{StaticResource MyTexBox}"
                                  Foreground="White" 
                                  Text="{Binding Path= BaseMain1б, Mode=TwoWay}"  />
</Grid>
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
13.07.2021, 15:08
Цитата Сообщение от marat1905 Посмотреть сообщение
у меня есть List при ввходе текста оператором в TextBox вызвать обновление листа
Где он у вас есть?
Я не вижу такого свойства в Репе.
0
1 / 1 / 1
Регистрация: 19.12.2016
Сообщений: 153
13.07.2021, 15:37  [ТС]
Элд Хасп,
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Где он у вас есть?
Я не вижу такого свойства в Репе.
В репозитории его нет.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16445 / 11288 / 2892
Регистрация: 21.04.2018
Сообщений: 33,185
Записей в блоге: 2
13.07.2021, 16:58
Цитата Сообщение от marat1905 Посмотреть сообщение
В репозитории его нет.
Тогда проясните.
Где у вас этот список, как его надо обновить.
Может есть какой-то метод для его обновления.
Что за VM? Почему список, а не IEnumerable?

Лучше создайте новую тему, чтобы не было путаницы.
И дайте нормальное разъяснение вопросу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.07.2021, 16:58

Передача данных между Viewmodel в MVVM
Не ругайтесь пожалуйста, я новичок) Есть проект WPF. Есть 1 корневое окно и у него 5 дочерних страниц для каждой таблицы бд. Для окна и...

Открытие дочернего окна, передача данных между ViewModel-ями окон
Добрый день. Есть концептуальный вопрос по разработке приложений с использованием паттерна MVVM. А именно открытие дочернего окна из...

Передача данных из textbox во viewmodel всплывающие окна
Доброй ночи, недавно начал разрабатывать приложения на wpf с помощью MVVM и при этом возникли такие вопросы: 1) Например, есть модель...

Событие передачи данных между ViewModel
Добрый день! Помогите сделать событие по передачи данных из одной VM в другую. Сейчас сделано так: ViewModel1 public event...

Привязать команду из ViewModel к кнопке из UserControl
Добрый день. Подскажите, как привязать команду из ViewModel к кнопке из UserControl, с текстом проблем не возникает, но с кнопкой не могу...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru