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