![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
dzaraev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 12.1.2013 Репутация: нет Всего: 1 |
Вопрос о событии PropertyChanged интерфейса INotifyPropertyChanged.
Допустим инвокер - метод OnPropertyChanged(string propertyName); Вижу два варианта логики вызова: 1. Вызывать только тогда, когда значение свойства действительно изменилось (строгий вариант). 2. Вызывать когда оно возможно изменилось (нестрогий вариант). Собственно вопрос - какая из двух практик более "по феншую", больше соответствует MVVM. А также - приемлем ли нестрогий вариант вообще и в каких случаях. Почему задаю такой вопрос - потому, что нестрогий вариант проще в использовании и поддержки со стороны класса, вызывающего событие. Однако строгий вариант - более "честный" и исключает вероятность ошибки на стороне клиента, вызванной неверным предположением, что свойство действительно изменилось (а оно могло остаться прежним). --------------------
Если вопрос решён - помечайте тему. |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: нет Всего: 306 |
если я правильно понял вопрос - то в сеттере привязанного свойства сначало идет проверка на равенство с уже имеющимся значением. если равно то ретурн, если нет то PropertyChanged
|
|||
|
||||
dzaraev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 12.1.2013 Репутация: нет Всего: 1 |
В простейшем случае да, но это возможно когда мы точно знаем, что значение изменилось и непосредственно меняем свойство.
Но иногда бывает, что у свойства, например, нет сеттера, а гет делегируется куда-нибудь дальше. --------------------
Если вопрос решён - помечайте тему. |
|||
|
||||
snav |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.9.2007 Репутация: 2 Всего: 4 |
Мне кажется, тут всё зависит от ситуации. Универсального рецепта нет.
|
|||
|
||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: нет Всего: 40 |
Мне кажется это не то место, где можно настолько просесть по перфомансу, что бы размышлять "вызвать или не вызвать"...
Я всегда пишу вызов в сеттере без проверок:
|
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 2 Всего: 118 |
чувак говорит не о том, а о том что у него еще есть свойство B:
и мол ты A меняешь, надо ли вызывать PropertyChanged("B") ? Я считаю что надо. Если класс реализует INPC то все его свойства должны обеспечивать интерфейс. Вопрос усложняется когда B зависит не от одного свойства A, а от нескольких.. тут надо крутить что-то вроде BeginUpdate()--EndUpdate() чтобы не дергать "B поменялся" впустую. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |