问题标签 [reactiveui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5133 浏览

c# - ReactiveUI 异常处理

我查看了许多 ReactiveUI 示例,但我看不到一个很好的简单示例来说明如何处理异常,即应向用户显示消息。(如果有一个很好的例子,有人可以指出我吗?)。

我的第一个问题是如何使用 ReactiveCommand 和 ToProperty 处理异常。例如,我有以下代码:

我想我一定是误解了 ThrownExceptions,因为当我运行上面的代码时,这个 observable 没有收到任何项目。我究竟做错了什么?

我的第二个问题是如何以对 MVVM 友好的方式执行此操作。此博客条目提到了用户错误功能,但我找不到任何有关如何使用它的文档。我将如何在上面的示例中实现它?

编辑:我已经根据 Paul 在下面的回答在 github上发布了一个示例解决方案。

0 投票
1 回答
868 浏览

reactiveui - ReactiveUI 4.1 CreateDerivedCollection(...) 过滤器似乎不起作用

我正在使用ReactiveUI 4.1. 我使用一个ReactiveCollection可选项目(具有IsSelected标志)作为另一个派生反应集合的来源,该集合使用过滤器仅查看具有IsSelected == true. 如果在创建派生集合之前源集合预先填充了一些未/选定的项目,则视图过滤器似乎可以工作,但是当稍后源集合中的项目从选中状态变为未选中状态时,这些项目不会“消失”派生的集合。我确实在所有集合上设置ChangeTrackingEnabled了标志true,但它似乎没有帮助。附上我的代码片段:

0 投票
1 回答
134 浏览

c# - 两个当任何一个对象错误

我使用reactiveUI来查看DP的属性代码是

当我按高度调整窗口大小时,没有消息框但是当我按宽度调整窗口大小时,有两个消息框当我评论其中任何一个时,它工作得很好,但有两个时任何工作不正常

我知道我可以通过一个 whenany 观察两个属性,但我需要通过两个 WhenAny 观察两个不同类型的依赖属性

我怎样才能做到这一点?

0 投票
1 回答
474 浏览

reactiveui - 订阅 ReactiveAsyncCommand 不会在抛出异常时调用 OnError

我创建了一个 ReactiveAsyncCommand (SL5),但无法订阅触发 OnError 方法。这是代码

以及 Start 的代码

当我运行这段代码时,我从 ReactiveUI 框架中得到一个异常,提示我应该订阅 ThrownExceptions。当我这样做时,我上面抛出的异常得到了正确处理。

我应该预料到命令订阅会调用 OnError 吗?还是我必须使用 ThrownExceptions。

0 投票
1 回答
227 浏览

wpf - 带有 CanExecute = null 的 ReactiveAsyncCommand 导致 CanExecute 始终为 false

这个问题与我前段时间发布的一个问题有关(这里)。

我正在使用ReactiveAsyncCommand以下方式:

因此,每 10 秒我想调用一个命令,它将函数的结果通过管道传输到列表。

但是,在最初的 之后Execute,每次后续CanExecute的命令都是假的。我检查了使用:

发生这种情况有原因吗?

0 投票
3 回答
394 浏览

wpf - 组合依赖属性

我现在已经完成了几个 WPF 项目,并且看到了同样的问题,那就是聚合/组合依赖属性(dp)的“问题”。

例如,我有 10 个 bool 类型的 dp,我想将它们组合并作为单独的 dp 公开。组合的 dp 为真,除非它的一个或多个成分为假。

我目前使用 addValueChanged 来执行此操作,它为 10 个 (!() dp 中的每一个注册一个回调,但我想知道是否有更优雅的解决方案或者可能是解决这种常见情况的框架。我还没有使用 reactiveUI 和 mvvm light但我认为它在这里很有用。

0 投票
2 回答
7273 浏览

reactiveui - 无法加载文件或程序集'system.core version=2.0.5.0

我试图在使用 Prism的WPF应用程序中使用ReactiveUI 。我使用NuGet安装了这些包,但只是在ModuleCatalog的初始化期间添加了导致标题中指定的异常的引用。

编辑:

正如 Pierre Arnaud 指出的那样,问题是 Microsoft.Bcl.Async 无法解析 System.Core 版本 2.0.5.0。

自从我第一次发布这个问题以来,我们搬到了 Visual Studio 2012。同样的问题仍然存在,我什至无法安装 Pierre 建议的修复程序,因为我现在已经安装了 .Net 4.5。该项目仍以 .Net 4.0 为目标。

0 投票
1 回答
1994 浏览

reactiveui - ReactiveUI 视图绑定到附加属性

此博客条目描述了使用视图绑定来替代 XAML 绑定。我喜欢基于约定的接线:

如果我想绑定到 TextBox 的 Text 属性:

但是,我有一个要绑定的附加属性(用于附加行为模式的实现)。如何使用 View Bindings 语法绑定到附加属性?

0 投票
2 回答
224 浏览

system.reactive - 为什么我的 WCF 异步与 Rx 单元测试不稳定?

我在 MVVM 项目中使用 Rx 和 RxUI,并且有一个视图模型可以从 WCF 服务异步查询其数据。在单元测试中,我创建了一个模拟对象,它返回一个具有预期值的任务。

这是我的视图模型的大致概念

我的单元测试看起来像这样

我遇到的问题是,我有超过 400 个测试可以做这种事情,而且它们大部分时间都可以工作,但是我随机得到失败的测试,一次一两个,报告序列没有值。这是不可预测和随机的。我可以在失败后再次运行测试并且全部成功。我已按照此处所述添加了 TestScheduler,但问题仍然存在。

有没有更好的方法来测试进行异步方法调用的方法?

根据 Paul Bett 的输入进行编辑:我看到 FromAsync 不采用 IScheduler 参数,但我确实有可用的 SubscribeOn 和 ObserveOn。

或者,我可以直接调用 WCF 异步方法并将返回的 Task 转换为 observable。我不确定我是否理解何时使用 Observable.FromAsync 与不使用它更合适。

0 投票
1 回答
183 浏览

reactiveui - 使用非默认支持字段命名约定的 UserError.Throw

我很难理解我在UserError课堂上做错了什么。

这是我的 ViewModel 中的代码:

在异步操作中引发异常后,它会正确传播到我Usererror.ThrowSelectMany. 在 Throw 方法中,RxUI 抛出一个 ArgumentException:“你必须为这个属性声明一个支持字段,名为:recoveryOptions”

我已经对此进行了调查,并且 UserError 类有一个_RecoveryOptions从 UserError 本身设置的。但是,我在我的应用程序的 OnStartup 事件处理程序中使用这个扳手进入整个过程:

RxApp.GetFieldNameForPropertyNameFunc = prop => prop.Length == 1 ? prop.ToLower() : char.ToLower(prop[0]) + prop.Substring(1);

基本上,我希望我的支持字段以小写字母开头,而不是下划线/大写字母。到目前为止,RxUI 已经兑现了这一点,直到我尝试使用 UserError。我错过了一步还是这是 RxUI 中的错误?

这适用于反应式 UI 3.2.0