0

私はRxUIを初めて使用し、Jounceから来て、フィールドの検証を最善の方法で行おうとしています。RxUI で検証を行うための最良の方法に関するドキュメントが見つからないようです。

ReactiveValidatedObject から派生したビュー モデルがいくつかあります。

次のようなプロパティがあります。

    [Required]
    [StringLength(9,MinimumLength=9)]
    public string CUSIP
    {
        get { return _CUSIP; }
        set { this.RaiseAndSetIfChanged(x => x.CUSIP, value); }
    }

保存コマンドを実行するときに、エラーのあるコントロールの UI に検証エラーが表示されるようにするにはどうすればよいですか?

        this.SaveCommand = new ReactiveCommand();
        this.SaveCommand.Subscribe(_ =>
            {
            });

...私はJounceに慣れていて、次のようなことをしています:

    private string _oldPassword;
    public string OldPassword
    {
        get { return _oldPassword; }
        set { _oldPassword = value;
        ValidateOldPassword();
        RaisePropertyChanged(() => OldPassword);
            }
    }

    private void ValidateOldPassword()
    {
        ClearErrors(() => OldPassword);
        if (string.IsNullOrEmpty(OldPassword))
            SetError(() => OldPassword, "Old Password is required.");
        if (OldPassword != UserContext.Password)
            SetError(() => OldPassword, "Old Password is incorrect.");
    }

助けてくれてありがとう。:)

4

1 に答える 1

1

したがって、この場合、これを行うための「正しい方法」は次の方法ですUserError

var disp = UserError.RegisterHandler(error => {
     // TODO: Make this better :) 
     MessageBox.Show(error.ErrorMessage);
     return null;
});

// Unregister the error handler for the Window once it closes
this.OnClose += (o,e) => disp.Dispose();

this.SaveCommand
    .Where(_ => IsObjectValid())
    .Subscribe(_ -> SaveTheObject());

this.SaveCommand
    .Where(_ => !IsObjectValid())
    .Subscribe(_ -> UserError.Throw("The form is invalid"));
于 2012-10-05T01:58:18.537 に答える