System.ObjectModel.DataAnnotation
プロパティが検証用の属性で装飾されているオブジェクトにバインドされたデータフォームがあります。
私が直面している問題は、このクラスの一部のプロパティが条件付きでのみ必要であり、検証する必要がないことです。たとえば、アプリの管理者がユーザーを編集する場合、パスワード/パスワードの確認/パスワードの質問/パスワードの回答を入力できます。または、それらのプロパティを完全にスキップすることもできます。
したがって、管理者がこれら 4 つのフィールドのいずれかを入力することにした場合、それらはすべて存在している必要があり、これらすべてのフィールドの検証ルールを適用する必要があります。ただし、管理者が FirstName、LastName、Email、またはその他の任意のプロパティのみを変更したい場合は、パスワード関連のフィールドを検証する必要はありません。
それらを検証プロセスから「除外」する方法はありますか?
これは私が扱うオブジェクトのサンプルです:
public class RegistrationData
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string PasswordConfirm { get; set; }
public string PasswordQuestion { get; set; }
public string PasswordAnswer { get; set; }
}
Xaml に registrationForm という DataForm があり、エラーは次のコードにあります。
private void RegistrationButton_Click(object sender, RoutedEventArgs e)
{
if( this.registerForm.ValidateItem() )
{
//Does not pass validaton if the password properties are not filled in.
}
}
それを修正する方法についてのアイデアはありますか?
私は2つのDataFormsを使用することを考えていました...そしてユーザーオブジェクトを2つに分割しましたが、それには多くのコードが含まれます...