Ошибка валидации и NotififyOnValidation не работает - PullRequest
0 голосов
/ 17 мая 2018

У меня есть имя свойства, которое требуется в модели.Затем в VM у меня есть свойство Name, которое обращается к одному из модели.И, на мой взгляд, я связываю текстовое поле со свойством Name виртуальной машины.Но текстовое поле не становится красным, когда оно пустое.Я получаю ошибку: Имя поля обязательно.Но снова текстовое поле не становится красным.Пожалуйста, помогите

вот модель:

public class Task : BasicAuditTrail
{

    [Required]
    [MaxLength(256)]
    public string Name { get; set; }
}

Вот виртуальная машина:

public class TaskManagerViewModel : ViewModelBase, ITaskManagerViewModel
{
    public Task CurrentTask => taskManager.CurrentTask;

    public string Name
    {
        get
        {
            return CurrentTask.Name;
        }
        set
        {
            CurrentTask.Name = value;
            IsDirty = true;
            RaisePropertyChanged();
        }
    }

Вид:

<TextBox Grid.Row="0" Grid.Column="3" Name="Name" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" />

1 Ответ

0 голосов
/ 17 мая 2018

Как уже упоминалось в комментариях, свойство Name для CurrentTask должно быть напрямую связано с текстовым полем.Это заставляет ошибку работать правильно.

Чтобы установить свойство IsDirty в viemwodel, подпишитесь на событие PropertyChanged CurrentTask и установите IsDirty там!

PS: обязательно удалите событиекогда CurrentTask меняется, чтобы не было утечек памяти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...