ReactiveUI,WPF和验证

时间:2016-01-22 17:25:01

标签: c# .net wpf validation reactiveui

我已经看到ReactiveUI过去有验证功能。目前,在6.5版本中,我找不到与之相关的任何内容。

您是否知道使用ReactiveUI处理WPF中的验证任务是否有更多或更少的官方方式?

2 个答案:

答案 0 :(得分:3)

关于RxUI松弛组的总体共识是,人们正在暴露额外的验证属性,例如:拆分UserNameUserNameError(如果没有错误,则为null)。然后使用平台的验证/错误机制引起用户的注意。

答案 1 :(得分:0)

您无法查看此仓库https://github.com/reactiveui/ReactiveUI.Validation,该仓库也可以在NuGet画廊中找到。

此解决方案基于MVVM模式,因此您的ViewModel必须实现ISupportsValidation,添加规则(ValidationHelper属性)并绑定到View的验证规则。

ViewModel

public class SampleViewModel : ReactiveObject, ISupportsValidation
{
    public ValidationContext ValidationContext => new ValidationContext();

    // Bindable rule
    public ValidationHelper ComplexRule { get; set; }

    public SampleViewModel()
    {
         // name must be at least 3 chars - the selector heee is the property name and its a single property validator
         this.ValidationRule(vm => vm.Name, _isDefined, "You must specify a valid name");
    }
}

查看

public class MainActivity : ReactiveAppCompatActivity<SampleViewModel>
{
    public EditText nameEdit { get; set; }

    public TextInputLayout til { get; set; }

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        // Set our View from the "main" layout resource
        SetContentView(Resource.Layout.Main);

        WireUpControls();

        // bind to an Android TextInputLayout control, utilising the Error property
        this.BindValidation(ViewModel, vm => vm.ComplexRule, til);
    }
}

View示例利用了DroidExtensions(为Mono.Droid项目自动添加),但是您可以将错误消息绑定到View的任何控件。

希望对您有帮助。

最诚挚的问候。