【发布时间】:2016-01-04 18:26:43
【问题描述】:
我在 WPF 应用程序中使用响应式 ui。 有用于验证的基类:
public abstract class ReactiveValidatingScreen : ReactiveScreen
{
public Subject<bool> ValidationObservable { get; } = new Subject<bool>();
private void Validate(string propertyName)
{
// ... some logic
var isValid = GetValidationResult();
ValidationObservable.OnNext(isValid);
}
}
并查看模型:
public sealed class UserLoginViewModel : ReactiveValidatingScreen
{
public UserLoginViewModel()
{
Login = ReactiveCommand.CreateAsyncTask(ValidationObservable, x => LoginImpl());
}
}
有电话时,我的登录按钮总是禁用:
ValidationObservable.OnNext(true);
验证通过时。
但如果我改为:
public sealed class UserLoginViewModel : ReactiveValidatingScreen
{
public UserLoginViewModel()
{
var canLogin = this.WhenAnyValue(x => x.UserName, x => !string.IsNullOrEmpty(x) && x.Length == 3);
Login = ReactiveCommand.CreateAsyncTask(canLogin, x => LoginImpl());
}
}
正如预期的那样,它运行良好。
ReactiveUI 版本 - 6.5.0
【问题讨论】:
标签: wpf reactiveui