gpt4 book ai didi

c# - 在 ReactiveUi 5 上验证

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:30 25 4
gpt4 key购买 nike

我使用的是 ReactiveUI 5,但现在我需要在我的 ViewModel 中进行验证,所以我使用了文档中描述的 ReactiveValidatedObject。配置与版本 4 示例中的配置相同,但似乎不起作用。运行示例代码运行良好,但对于版本 5 它不起作用,我在 ValidatesViaMethod 属性中定义的验证方法未被触发。

我用简单的文本框验证仔细检查了每一件事,它与示例代码相同,但什么也没有。

我不知道还有什么可以做的。还有其他方法可以使用 ReactiveUI 进行验证吗?除了版本 4,我找不到任何文档或示例来说明如何执行此操作。

这是我的 ViewMode,我使用的是版本 4 的 ReactiveValidatedObject 和版本 5 的路由。

public class InputViewModel : ReactiveValidatedObject , IRoutableViewModel
{
bool val;
bool invalid = false;

public InputViewModel(IScreen hostscreen)
{
ValidationObservable.Subscribe(x => IsValid = this.IsObjectValid());
var whenAnyValuesChange = this.WhenAny(x => x.IsValid, x => x.Value);
HostScreen = hostscreen ?? RxApp.DependencyResolver.GetService<IScreen>();
}

[ValidatesViaMethod(AllowBlanks = false, AllowNull = false, Name = "IsNameValid", ErrorMessage = "Favor informe o nome corretamente")]
public string Name
{
get { return _name; }
set
{
this.RaiseAndSetIfChanged(ref _name, value);
}
}

public bool IsNameValid(string name)
{
return name.Length >= 2;
}

public IScreen HostScreen
{
get;
private set;
}

public string UrlPathSegment
{
get { return "InputView"; }
}

public Simulation Simulation { get; set; }

private bool _IsValid;
public bool IsValid
{
get { return _IsValid; }
set { this.RaiseAndSetIfChanged(ref _IsValid, value); }
}
}

最佳答案

如果您需要对验证进行更多控制,我建议您提供 FluentValidation一试。它与任何 MVVM 框架很好地集成,并且通过使用 InlineValidator 与基于属性的验证相比,您可以处理更复杂的验证场景。我自己在我的大部分项目中都在使用它。

关于c# - 在 ReactiveUi 5 上验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18852065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com