Регистрация значений изменений в привязке данных WPF к свойству - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть вопрос об уведомлении привязки данных WPF

У меня есть флажок, который двусторонне привязан к свойству bool внутренней модели данных.Я хочу показывать сообщение об изменении значения в пользовательском интерфейсе (скажем, «SomeBoolParameter изменяется с true => false») всякий раз, когда свойство изменяется.

Я реализовал интерфейс INotificationPropertyChanged в модели данных, и я знаю, что могу получать уведомления, установив SourceUpdated в XAML.

Однако EventArgs, которые я могу получить в событии SourceUpdated,объект DataTransferEventArgs, который я не знаю, как извлечь из него значение свойства модели данных.

Конечно, я могу разместить код регистрации в установщике свойств ... но определенно это уродливое решение,Есть мысли?

Ответы [ 3 ]

0 голосов
/ 27 апреля 2011

Насколько я знаю, DataTransferEventArgs имеет и свойство, и источник.Не могли бы вы просто сделать что-то подобное?

DependencyObject source = args.Source as DependencyObject;
if(source != null)
   DoSomething(source.GetValue(args.Property));
0 голосов
/ 27 апреля 2011

Помещение вашего регистрационного кода в Сеттер не страшно.Ваши сеттеры / геттеры должны генерироваться с помощью какого-то механизма, или LInq2SQL, Entity Framework, или какого-либо другого варианта или ORM, это означает, что вы можете настроить генератор так, чтобы код настраиваемого журнала регистрировался на всех сеттерах.не используйте ORM, и вы должны всегда использовать его, более блестящее решение - использовать Перехват, хотя будет казаться, что вы запрашиваете Танк, чтобы убить муху.Здесь есть очень хорошая статья об использовании Interception с Unity 2.0 здесь .

0 голосов
/ 27 апреля 2011

Почему вы говорите, что это уродливое решение?Сеттер вызывается каждый раз, когда вы меняете значение объекта.Если вы хотите следовать соответствующей архитектуре MVVM, единственный (и чистый) способ сделать это - установить сеттер

...