C# ReactiveUI'的目的是什么;s IViewFor<;T>;WPF中的(及其实现类型)?

C# ReactiveUI'的目的是什么;s IViewFor<;T>;WPF中的(及其实现类型)?,c#,wpf,reactiveui,C#,Wpf,Reactiveui,我正在学习ReactiveUI,到目前为止我很喜欢它,但我现在意识到该框架也包含XAML(即视图层),提供了ReactiveUserControl和ReactiveView等功能 为什么我需要或想要这些?System.Reactive/ReactiveUI在模型/视图模型方面提供了巨大的优势,但在WPF应用程序的上下文中,视图方面又有哪些优势?也许是单元测试 注意:我喜欢WPF,我喜欢它的数据绑定。我所有的XAML绑定都是强类型的,并且易于重构、定制、重新换肤、调试等等。我学会了使用转换器,但并

我正在学习ReactiveUI,到目前为止我很喜欢它,但我现在意识到该框架也包含XAML(即视图层),提供了
ReactiveUserControl
ReactiveView
等功能

为什么我需要或想要这些?System.Reactive/ReactiveUI在模型/视图模型方面提供了巨大的优势,但在WPF应用程序的上下文中,视图方面又有哪些优势?也许是单元测试

注意:我喜欢WPF,我喜欢它的数据绑定。我所有的XAML绑定都是强类型的,并且易于重构、定制、重新换肤、调试等等。我学会了使用转换器,但并没有过度使用,所以这些转换器也不会有问题。我从未觉得有必要重写UserControl类。尽管如此,我对WPF本身从未有过问题

如果我决定使用
IVIewFor
实现,我的XAML设计器会发疯吗?我会失去什么吗?我最终会调试内存泄漏、UI结巴和奇怪的CPU峰值吗?我们将制作一个非常大的应用程序,因此我们遵循“安全胜于抱歉”的原则,因为我们之前被CAB框架烧坏了

如果我决定反对,我们将失去反应UI的哪些好处?我会因为这样做而成为异教徒吗,或者这更像是框架的一个可选方面


到目前为止,我了解WinForms或Android(据我所知,它提供绑定支持)的好处,但不了解WPF。虽然它确实有它的怪癖,但我不觉得有必要在它上面再加一个框架。

例如,当您想在视图中设置绑定时,以及当您想处理激活和停用时,您可以实现
IViewFor
,例如:

this.WhenAnyValue(x => x.ViewModel.Name).BindTo(this, view => view.Name.Text);

this.WhenActivated(d => { /* do something */});
这些方法作为扩展方法实现。有关更多信息和示例,请参阅文档:


当然,您不必使用ReactiveUI的所有功能。像往常一样在XAML标记中设置绑定,并且仍然绑定到
ReactiveObjects

一篇文章中的问题太多了,这是非常好的@我不明白,但所有的子问题只是为了让我深入了解我认为与潜在的广泛主题“IViewFor的目的”相关的信息。我能找到的最多的(包括文档)是“它使视图变得被动”,它没有解决我在问题中提到的任何问题。为了解决您的一些其他问题,实现IViewFor本身不会导致任何XAML设计器问题。如果您使用ReactiveUserControl,这可能是因为XAML设计器不喜欢泛型,但该类实际上是可选的,文档中讨论了处理该类的方法。我们在文档中提到的内存泄漏,DependencyProperty是臭名昭著的,因此是WhenActivated机制。这也是MVVM框架主要关注包括移动设备在内的多平台支持。因此,一切都是极其轻量级和记忆意识。例如,与其他框架相比,我们的服务定位器相当愚蠢,但它也具有快速/低内存影响。此外,我们非常关注选择你想要的,不要选择你不想要的。谢谢你的回答,嗯,是的,我非常喜欢在虚拟机中激活时的
。。。。另一个常见的用例是导航——IViewFor用于确定与ViewModel匹配的视图。