我对WPF数据绑定通知有疑问
我有一个复选框,它与内部数据模型的bool propery双向绑定。我想要的是在更改属性时在UI中显示值已更改消息(假设“SomeBoolParameter从true更改为> false”)。
我在数据模型中实现了INotificationPropertyChanged接口,我知道可以通过在XAML中设置SourceUpdated来获得通知。
但是,我在SourceUpdated事件中收到的EventArgs是一个DataTransferEventArgs对象,我不知道如何从中检索数据模型属性值。
当然,我可以将记录代码放在属性设置器中......但是它是一个丑陋的解决方案。有什么想法吗?
答案 0 :(得分:0)
你为什么说这是一个丑陋的解决方案? 每次更改对象值时都会调用setter。如果您想遵循适当的MVVM架构,那么唯一(也是干净的)方法就是在setter中
答案 1 :(得分:0)
据我所知,DataTransferEventArgs同时具有Property和Source。难道你不能简单地做这样的事吗?
DependencyObject source = args.Source as DependencyObject;
if(source != null)
DoSomething(source.GetValue(args.Property));
答案 2 :(得分:0)
将您的日志代码放在Setter上并不难看。您的setter / getter应该通过某种机制生成,LInq2SQL,Entity Framework或其他一些flavor或ORM,这意味着您可以调整生成器以将自定义日志记录代码放在所有setter上。
如果你不使用ORM,并且你应该总是使用它,一个更有光泽的解决方案是使用拦截,虽然它会让你觉得你要求坦克杀死苍蝇。关于在Unity 2.0 here中使用拦截的文章非常好。