Как сразу обновить TextBox после исправления связанного свойства? - PullRequest
2 голосов
/ 11 августа 2010

Я сделал привязку из TextBox к свойству.Если пользователь записывает значение даты в TextBox, оно должно быть автоматически исправлено.например: 20.01.10 -> 20.01.2010

Исправление выполняется в блоке установки Propertys:

public String DateOfBirth
{
    get
    {
        if (patient.DateOfBirth != DateTime.MinValue)
          return patient.DateOfBirth.ToString("dd.MM.yyyy");
        else
          return patient.BirthdayString;
    }
    set
    {
        string dateParsed = ValidateDatePart(value, false, true);
        DateTime date = new DateTime();
        DateTime.TryParse(dateParsed, out date);

        patient.DateOfBirth = date;
        patient.BirthdayString = dateParsed;

        base.OnPropertyChanged("DateOfBirth");
    }
}

patient.DateOfBirth и patient.BirthdayString - значения в модели данных моегоприложение.Возвращение дня рождения в виде строки необходимо, потому что пользователь должен иметь возможность вводить части дня рождения, например, если день рождения не полностью известен, например «12 .1967».Моя проблема заключается в том, что, если пользователь вводит дату, например «20. 01.10», эта дата исправляется в свойстве, но для исправленной даты («20. 01.2010») не устанавливается значение TextBox.TextBox содержит еще 20,01.У кого-нибудь есть идея, как можно обновить TextBox?Режим привязки по умолчанию должен быть TwoWay.

Вот XAML для TextBox:

<TextBox Validation.ErrorTemplate="{StaticResource errorTemplate}" Style="{StaticResource NotEmptyTextBox}">
    <Binding Path="OrderVM.Patient.DateOfBirth" ValidatesOnDataErrors="True" ValidatesOnExceptions="True" />
</TextBox>

Ответы [ 2 ]

1 голос
/ 11 августа 2010

просто попробуйте с

Text = "{Binding Path = Name, UpdateSourceTrigger = PropertyChanged }"

1 голос
/ 11 августа 2010

ответ уже предоставлен в этом посте:

Двухстороннее связывание данных Silverlight при Key Up

РЕДАКТИРОВАТЬ: Извините, я неправильно понял вопрос, мой новый ответ ниже

Вы связали свое текстовое поле со свойством DateOfBirth своего пациента, а не со свойством DateOfBirth в своей модели представления:

<Binding Path="OrderVM.Patient.DateOfBirth" ... 

должно быть

<Binding Path="OrderVM.DateOfBirth" ...

И добавить дополнительные свойства в Binding IsAsync = true, чтобы отменить возможность игнорирования события PropertyChanged

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