【发布时间】:2013-10-28 20:22:56
【问题描述】:
我的项目示例中有一个名为 ContainsValidationRule 的类。我在这个项目中有一个名为 MainWindowViewModel 的视图模型。代码看起来像:
namespace Sample
{
using System.Globalization;
using System.Linq;
using System.Windows.Controls;
public class ContainsValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
var result = MainWindowViewModel.CurrentInstance.Items.Any(x => x.ToLower(cultureInfo).Contains((value as string).ToLower(cultureInfo)));
return new ValidationResult(result, "No Reason");
}
}
}
效果很好。但是,我不想将 MainViewViewModel 硬编码,而是将其作为参数传递给 Validate Method。所以我也可以将这个类用于其他 ViewModel。
如果有更好的解决方案,请将 ViewModel 名称作为参数传递,请描述。
【问题讨论】:
-
这篇文章 (stackoverflow.com/questions/4345606/…) 你可能会感兴趣。
-
ValidationRule 确实是验证事物的“旧”式方式。你应该看看
INotifyDataErrorInfo -
我同意@Shoe,但我不得不承认...我无法弄清楚您在这里验证的具体内容...请您赐教吗?