IReactiveBinding不适用于IDataErrorInfo

鲁弗斯·布沙特(Rufus Buschart)

我将IDataErrorInfo与IReactiveBinding.Bind()结合使用时遇到问题。我希望这里有人可以帮助我。

我有一个ViewModel,它继承自ReactiveObject并实现了IDataErrorInfo接口。

public class MainWindowViewModel : ReactiveUI.ReactiveObject, IDataErrorInfo    
{

  private string username = string.Empty;

  public string Username
  {
    get { return this.username; }
    set { this.RaiseAndSetIfChanged(ref this.username, value); }
  }


  public MainWindowViewModel()
  {
    this.Validator = new MainWindowViewModelValidator();
  }

  public AbstractValidator<MainWindowViewModel> Validator { get; set; }

#region IDataErrorInfo Members

string IDataErrorInfo.Error
{
    get
    {
        return Validator != null ? string.Join(Environment.NewLine, Validator.Validate(this).Errors.Select(x => x.ErrorMessage).ToArray())
        : string.Empty;
    }
}

string IDataErrorInfo.this[string propertyName]
{
    get
    {
        if (Validator != null)
        {
            var results = Validator.Validate(this, propertyName);
            if (results != null
                && results.Errors.Count() > 0)
            {
                var errors = string.Join(Environment.NewLine, results.Errors.Select(x => x.ErrorMessage).ToArray());
                return errors;
            }
        }
        return string.Empty;
    }
}

        #endregion
}

MainWindowViewValidator确保Username属性不为空。

在XAML文件后面的代码中,ViewModel连接到了View:

public partial class MainWindow : IViewFor<MainWindowViewModel>
{

    public MainWindow()
    {
        InitializeComponent();

        this.ViewModel = new MainWindowViewModel();

        this.Bind(this.ViewModel, viewmodel => viewmodel.Username, view => view.Username.Text);
    }
        public MainWindowViewModel ViewModel
    {
        get { return (MainWindowViewModel)GetValue(ViewModelProperty); }
        set { SetValue(ViewModelProperty, value); }
    }

    public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register("ViewModel", typeof(MainWindowViewModel), typeof(MainWindow), new PropertyMetadata(null));

    object IViewFor.ViewModel
    {
        get { return ViewModel; }
        set { ViewModel = (MainWindowViewModel)value; }
    }
}

现在的问题是,没有调用模型验证,因为我没有直接在XAML文件中指定数据绑定。

有人对此问题有一个好的解决方案吗?

安娜·贝茨

现在的问题是,没有调用模型验证,因为我没有直接在XAML文件中指定数据绑定。

ReactiveUI不参与,IDataErrorInfo并且没有朋友可以进行绑定。它曾经使用过,但实际上,如果您考虑一下,验证本身就是表单派生属性

ReactiveUI已经非常擅长描述属性之间的相互关系(通过WhenAny / ToProperty),因此您应该仅构造一个显示错误消息的ValidationError属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

curl不适用于#

来自分类Dev

不适用于参数()

来自分类Dev

instanceof 不适用于“或”

来自分类Dev

IndexRoute 不适用于“/”

来自分类Dev

ImportError:适用于osx而不适用于ubuntu

来自分类Dev

测试适用于“ $ f”,但不适用于“ $ @”

来自分类Dev

“多态适用于重载,而不适用于重载”?

来自分类Dev

相机不适用于opencv,但适用于流光

来自分类Dev

“多态适用于重载,而不适用于重载”?

来自分类Dev

适用于PHP,不适用于PHPUnit

来自分类Dev

BooleanToVisibilityConverter适用于Textblock而不适用于UserControl

来自分类Dev

适用于 PHP 但不适用于脚本

来自分类Dev

OrderBy 不适用于升序,但适用于降序

来自分类Dev

Pymongo $ currentDate不适用于存储

来自分类Dev

jQuery不适用于fadeOut

来自分类Dev

AddFavorite JS不适用于Chrome

来自分类Dev

更新内联不适用于+等符号

来自分类Dev

onCheckedChangeListener不适用于Android Studio

来自分类Dev

logback配置不适用于春季

来自分类Dev

ARRAYFORMULA()不适用于SPLIT()

来自分类Dev

自动装配不适用于@Repository

来自分类Dev

搜索不适用于Gridview

来自分类Dev

libfaketime不适用于golang

来自分类Dev

ScrollLeft()不适用于Firefox

来自分类Dev

样式不适用于子组件

来自分类Dev

插件不适用于xcode 6

来自分类Dev

单击不适用于python硒

来自分类Dev

laravel withinput不适用于数组

来自分类Dev

SVG ClipPath不适用于wkhtmltopdf