У меня в классе ValidatableObject реализованы интерфейс INotifyDataErrorInfo и INotifyPropertyChanged.
Интересно, когда я создаю новый экземпляр ValidatableModel в viewmodel и вызываю метод Validate после того, как загруженное представление работает.Но когда я создал мою модель в конструкторе viewmodel и вызвал метод Validate после загрузки представления, он не работает.
В чем разница между созданием экземпляра до загрузки представления и после загрузки представления.Вот код, я немного упростила
public class MyViewModel : ViewModelBase
{
private MyModel _myModel;
public MyModel MyModel
{
get { return _myModel; }
set
{
SetProperty(ref _myModel, value);
}
}
public MyViewModel()
{
MyModel = new MyModel();
}
//this not working, I calls this after view loaded
public void Validate()
{
MyModel.Validate();
}
//this working, I calls this after view loaded
public void Validate()
{
MyModel = new MyModel();
MyModel.Validate();
}
}
[JsonObject]
public partial class MyModel : ValidatableObject
{
private string _id;
public string id
{
get { return _id; }
set { SetProperty(ref _id, value); }
}
private string _status;
[Required(AllowEmptyStrings = false, ErrorMessage = "Field is mandatory")]
public string status
{
get { return _status; }
set { SetProperty(ref _status, value); }
}
private string _requestId;
public string requestId
{
get { return _requestId; }
set { SetProperty(ref _requestId, value); }
}
}
<TextBox Width="135"
Margin="10,0,0,0"
Validation.ErrorTemplate="{StaticResource MyErrorTemplate}"
Text="{Binding MyModel.status,NotifyOnTargetUpdated=True,Mode=TwoWay,NotifyOnValidationError=True,ValidatesOnDataErrors=True}" />