Как установить свойство в валидаторе IDataErrorInfo из Xaml - PullRequest
2 голосов
/ 24 января 2010

При использовании IDataErrorInfo в WPF есть способ передачи параметров в валидатор. Например, у меня есть DateDicker DueDate. При проверке новой задачи я хочу ограничить дату, разрешенную до сегодняшнего дня или позже, но при редактировании мне нужно разрешить дату до сегодняшнего дня, поскольку можно редактировать задачу, которая просрочена.

Мой DatePicker в Xaml (.Net 4.0)

<DatePicker SelectedDate="{Binding Path=SelectedIssue.IssDueDate,
            ValidatesOnDataErrors=True}" />

Мой IErrorDataInfo

namespace OITaskManager.Model
{
    public partial class Issue : IDataErrorInfo
    {
    // I want to set these values from the Xaml
    public DateTime minDate = new DateTime(2009, 1, 1);
    public DateTime maxDate = new DateTime(2025, 12, 31);

    public string this[string columnName]
    {
        get
        {
            if (columnName == "IssDueDate")
            {
                if (IssDueDate < minDate || IssDueDate > maxDate)
                {
                    return "Due Date must be later than " + minDate.Date + 
                           " and earlier than " + maxDate.Date;                    
                }
                return null;
            }
            return null;
        }
    }

1 Ответ

2 голосов
/ 24 января 2010

Вы можете просто использовать пользовательский валидатор для привязки. Или вы можете поддерживать внутреннее состояние IsNew в экземпляре объекта Issue, пока он больше не будет считаться новым.

...