C# 对WPF中的传递值使用ReactiveUI

C# 对WPF中的传递值使用ReactiveUI,c#,wpf,mvvm,reactiveui,C#,Wpf,Mvvm,Reactiveui,我有一个问题,我相当肯定ReactiveUI会有帮助,但我不能完全集中精力思考如何实现它。基本上我有一个简单的模型: public class Model { public bool IsThingEnabled { get; set; } public string MyStringSetting { get; set; } public bool IsModified { get; set; } } 然后我有了一个ViewModel,它可以编辑这个模型,或者把模型

我有一个问题,我相当肯定ReactiveUI会有帮助,但我不能完全集中精力思考如何实现它。基本上我有一个简单的模型:

public class Model
{
    public bool IsThingEnabled { get; set; }
    public string MyStringSetting { get; set; }

    public bool IsModified { get; set; }
}
然后我有了一个ViewModel,它可以编辑这个模型,或者把模型换成一个完全不同的模型

因此它有
isthingabled
mystringset
属性,但也有
模型
字段/属性。在此之前,我的方法是将属性getter和setter传递到底层模型,在setter上使用一些额外的逻辑来更新
模型上的其他依赖字段,将其
IsModified
设置为true,引发属性更改事件,并将模型持久化到磁盘

这工作得很好,但问题是,当我换出一个新的
模型时,我必须在每个属性上引发一个属性更改事件,这很容易忘记。我在想我可以用ReactiveUI以某种方式简化它,但到目前为止我还没有想出任何办法。我曾考虑过让一个
可观察的
和使用
可观察的属性帮助器
,但这显然是针对只有getter的属性的

然后,我考虑在VM上使用一个标准属性和一个带有
RaiseAndSetIfChanged
的setter,但我不太清楚
可观察对象或订阅要做什么。我可以观察到一个新的
模型
正在设置中,但仍然需要发布所有属性更改通知。我仍然需要设置订阅,以便在更改每个VM属性时将其向下传输到模型


我是否遗漏了关于ReactiveUI的某些内容,或者我应该使用不同的方法?

这应该是可能的,为了清晰起见,您可以扩展类定义以排除父/子模型属性吗?我最终找到了它,但它有点复杂。我最终得到了一个helper函数,它封装了我希望VM setter执行的所有操作。您可以注册一个属性,该属性允许您连接次要更改,并允许您在模型本身更改时引发所有更改的PropertyChanged事件。在helper函数中,它强制注册以确保您不会忘记某个属性。如果有兴趣的话,我会把这件血淋淋的事公布出来。