- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道绑定(bind)到 ReactiveCommand 的 IsExecuting
的推荐方式.
问题是初始命令执行(在构造函数末尾开始)没有使用 IsLoading
更新 WPF 控件。作为绑定(bind),尽管后续调用按预期工作。
更新 2 添加测试绑定(bind)代码
这显示了 IsLoading
时的装饰器内容。是真的
<ac:AdornedControl IsAdornerVisible="{Binding IsLoading}">
<ac:AdornedControl.AdornerContent>
<controls1:LoadingAdornerContent/>
</ac:AdornedControl.AdornerContent>
<fluent:ComboBox
ItemsSource="{Binding Content, Mode=OneWay}"
DisplayMemberPath="Name"
SelectedValuePath="ContentId"
SelectedValue="{Binding SelectedContentId}"
IsSynchronizedWithCurrentItem="True"
/>
</ac:AdornedControl>
this._isLoading = this.WhenAnyValue(x => x.LoadCommand.IsExecuting)
.ToProperty(this, x => x.IsLoading);
The type arguments for method 'ReactiveUI.OAPHCreationHelperMixin.ToProperty< TObj,TRet>(System.IObservable< TRet>, TObj, System.Linq.Expressions.Expression< System.Func< TObj,TRet>>, TRet, System.Reactive.Concurrency.IScheduler)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
this._isLoading = this.WhenAnyValue(x => x.LoadCommand.IsExecuting)
.ToProperty<TheViewModel, bool>(this, x => x.IsLoading);
'System.IObservable< System.IObservable< bool >>' does not contain a definition for 'ToProperty' and the best extension method overload 'ReactiveUI.OAPHCreationHelperMixin.ToProperty< TObj,TRet>(System.IObservable< TRet>, TObj, System.Linq.Expressions.Expression< System.Func< TObj,TRet>>, TRet, System.Reactive.Concurrency.IScheduler)' has some invalid arguments
Instance argument: cannot convert from 'System.IObservable>' to 'System.IObservable'
IsLoading
,我的帖子末尾列出的代码适用于初始绑定(bind)。属性(property),这听起来像是启动了订阅。但从进一步阅读看来我应该使用
WhenAny
而且我似乎无法弄清楚放在我 Nose 前面的是什么:
this.WhenAnyValue(x => x.LoadCommand.IsExecuting);
ObservableAsPropertyHelper
因为它似乎对我没有多大作用并制作
IsLoading
一个正常的属性,如:
private bool _isLoading;
public bool IsLoading
{
get { return _isLoading; }
set { this.RaiseAndSetIfChanged(ref _isLoading, value); }
}
IObservable< bool>
一个 bool 值:
this.WhenAnyValue(x => x.LoadCommand.IsExecuting)
.Subscribe(x => IsLoading = x);
private readonly ObservableAsPropertyHelper<bool> _isLoading;
public bool IsLoading
{
get { return _isLoading.Value; }
}
LoadCommand = ReactiveCommand.CreateAsyncTask(async _ =>
{
//go do command stuff like fetch data from a database
}
LoadCommand.IsExecuting.ToProperty(this, x => x.IsLoading, out _isLoading);
//works if I have this line
var startSubscription = IsLoading;
LoadCommand.ExecuteAsyncTask();
最佳答案
我以前遇到过这种情况,我认为您正在经历的谎言here .
ToProperty / OAPH changes
ObservableAsPropertyHelper no longer is itself an IObservable, use WhenAny to observe it.
ObservableAsPropertyHelper now lazily Subscribes to the source only when the Value is read for the first time. This significantly improves performance and memory usage, but at the cost of some "Why doesn't my test work??" confusion. If you find that your ToProperty "isn't working", this may be why.
var startSubscription = IsLoading;
'修复'问题。
ToProperty
你有,这似乎是恕我直言的方法。
关于reactiveui - 绑定(bind)到 ReactiveCommand.IsExecuting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25590339/
我已经看到一些关于使用 Observables 而不是带有 async/await 的任务的讨论。我目前几乎只使用 CreateFromTask。我一直在试图理解使用 CreateFromObserv
我有一个使用 ReactiveCommand 的 View 模型: public ReactiveCommand Command { get; } public MyViewModel() {
我正在努力处理一个 ReactiveUI 用例,我觉得它非常简单,必须有“开箱即用”的支持。但是我找不到它。 该场景是具有以下功能的基本搜索界面: 用户在其中输入搜索文本的搜索字符串文本框 显示结果的
我想用command实现textbox的KeyDown事件, 我想让命令可以识别KeyDown事件中的KeyEventArgs之类的键输入并做一些其他事情, 所以我想将命令参数传递给 Reactive
我正在使用 System.Windows.Interactivity 绑定(bind)一个 LoadedCommand,如下所示: 在我的 View 模型中,
我对 ReactiveCommand 处理 ObserveOn 和 SubscribeOn 的方式有疑问。 我有一个返回可观察的字符串序列的 API,它看起来像这样: public IObserva
当执行绑定(bind)到控件的 ReactiveCommand 时,我想将一个参数从我的 View 传递给我的 ViewModel。参数的类型应为 IJcUser 所以我这样定义命令: public
我想在命令执行之前设置忙标志和状态栏文本,并在它完成之后——重置标志和文本。我的工作代码在这里: Cmd = ReactiveCommand.Create(); Cmd.Subscribe(async
我知道如何处理 ReactiveCommand 调用的异步任务抛出的异常但是如何处理任务返回前抛出的异常? 在下面的例子中ThrowAndHandle命令将在执行时从异步任务中抛出异常,并将处理该异常
我有一个基本的 ReactiveCommand。没有异步魔法,只有普通的 ReactiveCommand.Create()。我 Subscribe() 的重载采用异常处理程序,但从未在所述异常处理程序
我订阅了一个命令的 IsExecuting: LoginCommand.IsExecuting.Subscribe(x => Log("Logging in")); 当我的 Command 被 Inv
我有这个 ReactiveCommand; LoadFileCommand = ReactiveCommand.CreateAsyncTask((_, cancellationToken) => Lo
我从一个冷的可观察对象创建了一个 react 命令。调用命令时,它会将 IsExecuting 更改为 true,并将 first emitted value 从 observable 更改回 fal
考虑在 ReactiveUI 中使用继承。我有带有 DoSomethingCommand 的 ViewModel 基类。此命令的“CanExecute”取决于属性 Prop1 public class
我刚刚开始使用 ReactiveUI。我有以下类(class): public class MainViewModel : ReactiveObject, IRoutableViewModel {
我熟悉 MVVM 的概念并使用过 MvvmCross,但我正在尝试 ReactiveUI 并尝试围绕一些概念进行思考。 我正在 WPF 中编写一个工具(可能分支到其他框架)供设计人员创建和编辑数据文件
我的 xaml ( 在此示例中仅显示 2 ) 中有几个 Tiles (TileLayoutControl Class),其可见性绑定(bind)到 bool 属性并通过 BooleanToVisibi
我想知道绑定(bind)到 ReactiveCommand 的 IsExecuting 的推荐方式. 问题是初始命令执行(在构造函数末尾开始)没有使用 IsLoading 更新 WPF 控件。作为绑定
我正在使用 ReactiveUI与 AvaloniaUI并且有一个带有多个 ReactiveCommands 的 ViewModel即扫描、加载和运行。 当 Observable 时调用扫描已更新(当
我缺乏经验,尤其是在 MVVM 方面,但尝试使用 ReactiveUI,并且我不理解我发现的演示 ReactiveCommand 的示例。我以前使用过 ICommand/DelegateCommand
我是一名优秀的程序员,十分优秀!