问题标签 [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 投票
2 回答
2585 浏览

system.reactive - How to observe a collection of items for when they are all valid?

I'm using ReactiveUI and the provided ReactiveCollection<> class.

In a ViewModel I have a collection of objects, and I wish to create an observable that watches those items for their IsValid property.

This is the scenario I'm trying to solve. In my ViewModel's constructor.

EDIT Ana's answer got me most of the way there. The solution is the following.

0 投票
3 回答
1863 浏览

c# - 单元测试 IObservable使用 ObserveOnDispatcher

我需要测试一段代码

所以我创建了这个小单元测试,但我无法通过原因列表。计数始终为 0

如果我注释掉方法

它通过了,但我怎样才能让它与 ObserveOnDispatcher() 一起工作?

0 投票
1 回答
3313 浏览

wpf - 如何使用 ReactiveUI 为 TextBox 设置 ViewModel 绑定?

出于某种原因,我无法让我的文本框/属性绑定与 Reactive UI “自动”一起工作。

我的 DataContext 设置如下:

我的 ViewModel 是在 MainWindow.xaml.cs 后面的代码中设置的:

在我的 WPF MainWindow.xaml 中,我有 DataContext 并且有一个像这样的文本框元素:

(其他属性省略)

在 MainWindowViewModel 我有这样的属性和字段:

我还有一个这样设置的命令:

你可以猜到,我也有密码确认文本框/属性设置,以及按钮的命令集(密码确认文本框也有同样的问题)。由于 ViewModel 中的字段/属性组合永远不会更新,因此该按钮永远不会启用。

我调试并确认 ViewModel 已绑定到 XAML,但在 TextBoxes 中键入时,文本永远不会在字段/属性组合中更新。

我查看了 GitHub 存储库中的示例 WP7 应用程序,他们手动绑定KeyUp事件以在属性/字段的文本中设置文本。如果我遵循这个约定,我的 MainWindow.xaml 中有这个:

但这是正确的做法吗?我认为 Reactive UI 会像我在其他 MVVM 框架中看到的那样处理绑定,除非我弄错了。有没有更简单的方法?

更新

正如 Paul Betts 在他的回答中的评论中指出的那样,您可以通过将此属性添加到绑定来启用绑定自动更新:

这将使 TextBox 元素看起来像这样:

0 投票
1 回答
181 浏览

windows-phone - RxUI:从集合中删除项目后出现异常

我正在编写简单的 WP7 应用程序来研究 ReactiveUI。我想在屏幕上显示一个集合,项目应该是可选择的,并且我想要一个命令从集合中删除所有选定的项目。此外,该命令必须仅在至少有一个选定项目时才可执行。我有一个以这种方式定义的集合:

PersonViewModel我有一个属性:

模型中没有关于选择状态的信息,只是在 viewModel 中。在 Page ViewModel 我有这个代码:

和一个方法:

第一个问题(不是那么重要,我想我可以自己找到解决方案):当我运行应用程序时,DeleteSelected 按钮是 Active.DeleteSelectedCommand.CanExecute 不会触发。但是,在选择/取消选择任何项目后 - 按钮状态工作正常。

和主要问题:

在我运行 DeleteSelectedCommand 后,它会删除所有选定的项目(我在调试器中看到它)。然后我得到了带有以下堆栈跟踪的“NotSupportedException”:

所以我做错了,但问题是什么?我无法从 ST 中理解。实现此行为的正确方法是什么。这很常见不是吗?

更新

如果我删除有关 deleteSelectedCanExecute 的所有代码并运行程序 - 它会崩溃。如果我删除Participants.ChangeTrackingEnabled = true;- 它会按我的预期工作。

0 投票
1 回答
211 浏览

windows-phone-7 - 在 Windows Phone 应用程序中一起使用 MVVM Light 和 AgFx

所以我刚开始开发 Windows Phone 应用程序,之前我没有任何使用 Silverlight 或 WPF(实际上是任何基于 XAML 的平台)的经验。自然地,在我加入之前,我开始做大量的研究和学习,我必须说这有点不知所措。

我决定的事情是我希望我的应用程序遵循 MVVM 模式,并且因为它会不断与 REST Web 服务通信,所以我也希望有一个好的缓存框架。

我目前正在将 MVVM Light、RestSharp、Silverlight Toolkit、Facebook C# SDK 和 Twitterizer 作为主要使用的库。(实际上我只需要 Facebook 和 Twitter 进行身份验证和授权,因此最终可能根本不使用这些库,而让 RestSharp 也能处理)。

真正的问题是,因为这是我的第一次,我无法真正决定是使用 MVVM Light 还是 RestSharp 之类的东西,后者具有一些很好的功能,例如使 MVVM 易于使用或 AgFx,我听说它非常擅长数据缓存。此外,我已经看到 Rx 被提及的次数足够多,也可以将其视为一种选择,但从我到目前为止所阅读的内容来看,它不适用于 MVVM Light 或 AgFx。虽然也有 ReactiveUI 框架。

任何关于采用什么平台的想法或建议都会在这里受到赞赏。就像我之前提到的,我的应用程序将完全依赖于 REST 后端,并且会主动使用手机上的位置服务(我的应用程序实际上是基于位置的)。

谢谢。

0 投票
1 回答
2102 浏览

wpf - 加载 MahApps.Metro.Controls 的 WPF 设计器错误 (System.NullReferenceException)

加载设计器时出现未处理的异常(VS2010)

这些是细节。

我努力了

--注释掉所有文本框

--注释掉我的视图模型构造函数中的所有代码

-- 在 MainWindow 构造函数中注释掉 MainWindowVieWModel 的创建...

我很困惑。。

代码...

主窗口视图模型的构造函数是空的,所以那里不应该有任何问题。

主窗口Xaml...

0 投票
2 回答
592 浏览

windows-runtime - 使用 Rx RTM 进行可观察的命令和单元测试

我已将我的代码移植到 WinRT 和 Rx 的 RTM 版本。我在我的 ViewModel 中使用 ReactiveUI。在移植代码之前,我的单元测试运行没有问题,但现在我有一个奇怪的行为。

这里是测试:

如果我一步一步调试测试,断言并没有失败,但是使用测试运行器它失败了......

断言的集合由订阅命令的方法修改:

该代码在将其移至 RTM 之前正在运行。我还尝试在 Assert 之前删除ObserveOn并添加一个,但没有成功。await Task.Delay()

0 投票
2 回答
286 浏览

windows-runtime - 使用 RxUI 可以订阅 KeyDown 事件并根据条件阻止输入吗?

我在 WinRt 项目中尝试使用 RxUI,只是看看我是否可以得到一些工作,我怀疑我正在做的不是一个有效的用例,但我想我会要求确定。

我有一个绑定到属性的文本框,我想订阅 keydown 事件并防止用户输入不适当的字符(在这种情况下,任何不是数字的字符)。由于使用 MVVM,我无法访问文本框本身,只能访问绑定值。

这还能做吗?- 订阅更改的属性然后撤消其输入似乎有点奇怪,如果它是不可取的。

0 投票
1 回答
791 浏览

c# - 带用户确认的异步命令执行

我需要在用户确认的情况下执行异步删除操作。像这样的东西:

问题是 MessageBox 也会异步执行。ReactiveUI 中同步询问用户然后异步执行方法的最佳模式是什么?

0 投票
1 回答
260 浏览

c# - 找不到 ICreatesObservableForProperty

我刚刚开始探索 ReactiveUI,但遇到了一些问题。

在 ReactiveObject 中,我尝试基于属性创建一个 observable ......

...导致以下错误:

找不到 MyApplication.ViewModels.StudentListViewModel 的 ICreatesObservableForProperty。这绝不应该发生,您的服务定位器可能已损坏。

我已将其用作NinjectDI 容器,并尝试像这样告诉 ReactiveUI:

有人看到这里的问题吗?