所以我对路由事件的概念不熟悉,但我知道当字段通过RaiseDataMemberChanging / RaiseDataMemberChanged消息更改时,消息随处可见。
快速问题是如何“收听”这些路由消息?
我希望我的视图模型,在MVVM正确的事情中,拦截一个字段正在更新的消息,深入到表的层次结构中。如果子项(日期范围)发生更改,则该日期范围更改具有与之关联的一些业务逻辑,从上到下。
我知道我可以使用部分方法在更改和更改事件期间注入代码,但设计(一对一关系)意味着在子项的上下文中对子项的更改没有引用父级(父级对子级具有一对一引用,但子级没有父级引用)。
是的我可以将子项的引用添加到父项(使父项具有一对一,以及一对多的关系),但在创建实体期间,这会产生问题 - 父在子实体存在之前存在,并且子实体必须存在才能存在对父实体的引用。这种设计需要插入父项和子项,然后更新子项 - 这会在初始创建过程中混淆WCF RIA服务。
对于长篇大论的解释感到抱歉,但如果对所有关心评论的人都有意义,我甚至会考虑设计变更。
任何意见都会受到赞赏。
答案 0 :(得分:0)
我正在使用订阅相关实体的PropertyChanged事件。过滤掉几个领域的所有事件似乎需要做很多工作。
使用RX,我希望使用的资源是最小的,当使用强引用来处理事件时,弱引用可以避免内存链接问题:
Observable.FromEventPattern<PropertyChangedEventArgs>(this.FlowEntity, "PropertyChanged")
.Where(pPropertyChanged => (
pPropertyChanged.EventArgs.PropertyName.EndsWith("Date")) ||
pPropertyChanged.EventArgs.PropertyName == "Capacity"
)
.Subscribe(pObserver => this.RaiseFlowEntityDateChanged(this, pObserver.EventArgs));
FlowEntity是我从父级监控的子实体。然后我使用父实体来提升自定义事件,而不是实际持有事件的实体。
我无法从部分方法中提取此事件,因为子实体不具有父级的上下文。