私のプロジェクト サンプルには、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 メソッドに渡したいと思います。したがって、このクラスを他の ViewModel にも使用できます。
ViewModel名をパラメータとして渡すより良い解決策がある場合は、説明してください。