|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
||||||
Как поднять RaisepropertyChanged отдельного свойства извне?24.09.2020, 18:09. Показов 8404. Ответов 100
Метки нет (Все метки)
Здравствуйте.
Вот такого вида свойство.
0
|
||||||
| 24.09.2020, 18:09 | |
|
Ответы с готовыми решениями:
100
Как изменить свойства ComboBox из отдельного потока Какие общие правила для написания отдельного класса/файла с условием/заданием и отдельного класса с методом решен? PropertyGrid. Как отловить видимость свойства в зависимости от другого свойства? |
|
Модератор
|
|||
| 28.09.2020, 13:00 | |||
|
В данном случае, при создании DialogWindowViewModel в конструктор передаётся делегат метода Load(), этот делегат запоминается в поле this.update = update ?? throw new ArgumentNullException();.Для вызова метода по ссылке в делегате надо обратиться к этому полю как к методу update()
1
|
|||
|
Модератор
|
||
| 28.09.2020, 13:19 | ||
|
1
|
||
|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
||
| 28.09.2020, 13:41 [ТС] | ||
|
В debugging,
-если смена фокуса на TextBox приводит программу к методу Load. Так и должно быть. -в Диалоге, нажатие кнопки "Да" ни к чему не приводит. Добавлено через 31 секунду
0
|
||
|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
||||||
| 28.09.2020, 15:16 [ТС] | ||||||
|
Элд Хасп,
Как с этим? Нельзя оставить без изменений.
0
|
||||||
|
Модератор
|
||||||||||||
| 29.09.2020, 10:25 | ||||||||||||
|
Тогда уберите переопределение метода RaisePropertyChanged. Должно быть одно из двух или вызов в теле свойство, или в RaisePropertyChanged. Но для себя знайте, в реальных своих задачах так никогда не делайте. Свойства должны определяться таким образом
Set(ref ..., value) методы есть в любом фрамеворке.Даже в моей простой учебной реализации для этого форума: Новая реализация OnPropertyChangedClass [WPF, Элд Хасп]. Добавлено через 5 минут И надо добавить перегрузку для метода Load
1
|
||||||||||||
|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
|||||||
| 29.09.2020, 12:04 [ТС] | |||||||
|
Элд Хасп,
![]() oldvalue, newvalue -
0
|
|||||||
|
Модератор
|
||
| 29.09.2020, 14:42 | ||
|
потом в теле класса на пустой строке выберите "Быстрые Решения". В них "Создать переопределения". В Окне выберите метод RaisePropertyChanged(string....Посмотрите в каком синтаксисе будет вставлен этот метод. Возможно для вашей версии нудно не просто default а с параметром T oldValue = default<T>, T newValue = default<T>,
1
|
||
|
10 / 10 / 1
Регистрация: 10.09.2019
Сообщений: 232
|
||||||
| 29.09.2020, 17:33 | ||||||
|
Элд Хасп,
В таком виде на одном компе значение параметра что при смене фокуса в TextBox, что при нажатии кнопки "Да" в диалоге -проходит. Смотрел в дебаге, значение на месте. На ноуте код тот же и первая часть кода=ОК, но при нажатии кнопки "Да" в диалоге, программа заходит в тело метода, но значение имеет "-1". То есть в свойстве срабатывает проверка Load(value ?? -1);Разве такое бывает? Шаги в дебаге идентичные, во второй программе код "на лево" не ходит.
1
|
||||||
|
Модератор
|
||
| 29.09.2020, 21:26 | ||
|
По кнопке может быть вызвана только перегрузка Load().И раз выводится значение -1, значит в этот момент SelectedItem=null.Для идентификации проблемы, задайте в XAML ещё один отладочный TextBlock привязанный к SelectedItem. По нему вы будете в реальном времени видеть значение свойства. Я думаю, скорее всего, проблема в отсутствии UpdateSourceTrigger=PropertyChanged в привязке TextBox.
0
|
||
|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
|||
| 29.09.2020, 22:16 [ТС] | |||
|
показывает "2". Тут почему-то связь между свойством и методом теряется.
0
|
|||
|
Модератор
|
|||
| 29.09.2020, 22:24 | |||
Сообщение было отмечено Berendom как решение
РешениеА вот нарушится связь TextBox со свойством может. Добавлено через 1 минуту Причём здесь "моргнёт", если там и так "2". Можете видео сделать и показать что не так?
0
|
|||
|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
|
| 29.09.2020, 22:40 [ТС] | |
|
0
|
|
|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
|
| 30.09.2020, 14:41 [ТС] | |
|
Элд Хасп,
не интересно в чем проблема была?
0
|
|
|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
|||
| 30.09.2020, 19:28 [ТС] | |||
|
Связь терялась. Редиска Nguen, в своей версии сделал исполнение метода Load чуть по другому это то и прерывало связь между свойством и методом. И вынес мне мозг, помоги, что-то не так. Код тот-же... ![]() А именно: он сделал экземпляр VM и вызывал метод. Увы, мораль сей басни такова "если хочешь не потерять параметр вызывай метод там же где и свойство". Как только я сделал как у себя. Т.е. метод вызывается в VM через Messenger, а свойство "лежит" рядом. Параметр не теряется. Т.е. "выдирая " метод в экземпляр мы отрываем его от свойства.
1
|
|||
|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
||||||
| 16.10.2020, 21:49 [ТС] | ||||||
|
Элд Хасп,
возвращаясь назад, как все-таки сделать красиво? Запустить метод Load из другого класса по Сommand или событию кнопки. Но чтобы число сидящее в свойстве все-таки передалось в тело.
0
|
||||||
|
Модератор
|
||
| 16.10.2020, 23:43 | ||
|
Рамочно мы можем определить несколько уровней функционала. Один - это подгрузка каких данных для View из ViewModel и не влияющая ни на Данные в Model, ни на их состояние ViewModel. В таком случае, реализацию этого метода лучше сделать в View. В том числе можно использовать клик. В другом - в методе происходит изменение состояния ViewModel. Click и VM находятся в разных уровнях абстракции, но View может обращаться к членам VM. Здесь надо смотреть несколько глубже - требуется ли методу Load какое-то взаимодействие с разными VM и должны ли быть "знания" об этом у View. И последний уровень - Load (в конечном итоге) влияет на данные Модели. Здесь без вариантов - ни какого Click. Но это всё общие рассуждения. На практике обоснованное использование у одной кнопки команды и Click встречается крайне редко. Допустим, диалоговое окно: по команде - передаются данные в VM, а по Click - закрывается окно. Так как VM понятия не имеет об Окне, но ей нужны данные, то такое разделение вполне обоснованно. Но в большинстве случаев, потребность в одновременном использование с большой вероятностью говорит о каких-то проблемах в Решении в целом, его неверной архитектуре.
0
|
||
|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
||
| 17.10.2020, 00:12 [ТС] | ||
|
при вводе в TextBox числа, метод Load подгружает во View числа. Также нужно подгружать те же числа (но именно по номеру сидящему в свойстве) из кнопки в другом окне.
0
|
||
|
Модератор
|
||
| 17.10.2020, 00:24 | ||
|
"Красиво" - это Решение в паттерне MVVM. Поэтому рассуждения должны начинаться с Модели: в Модели есть такие-то данные и такие-то методы. ViewModel таким-то образом отражает эти Данные в своих свойствах. При изменении такого-то свойства VM его значение должно быть передано в Модель. Рассуждая "от View" вы поневоле будет делать "некрасивую" реализацию.
0
|
||
| 17.10.2020, 00:24 | |
|
Как выставить значение true свойства MdiList для пункта меню ArrangeIcons в menuStrip, если там этого свойства нет? Как сделать доступ извне Как передать код компилятору извне? Как извне подключиться к ftp localhost?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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) активировать флаг. . .
|