Проверка INotifyDataErrorInfo не работает, хотя метод GetErrors вызывается в WPF - PullRequest
0 голосов
/ 20 сентября 2018

У меня в классе 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}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...