|
-12 / 24 / 4
Регистрация: 22.06.2020
Сообщений: 376
|
||||||
Как поднять RaisepropertyChanged отдельного свойства извне?24.09.2020, 18:09. Показов 8225. Ответов 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?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера 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, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|