首页 文章

如何修正绑定属性后立即更新TextBox?

提问于
浏览
2

我已经从TextBox绑定到Property了 . 如果用户将日期值写入TextBox,则应自动更正 . f.e . :20.01.10 - > 20.01.2010

更正在propertys set-block中完成:

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.DateOfBirthpatient.BirthdayString 是我的应用程序的datamodel中的值 . 需要将生日作为字符串返回,因为用户应该能够输入生日的部分内容,例如 . 如果生日不完全像'12.1967' . 我的问题是,如果用户输入类似'20.01.10'的日期,则在属性中更正此日期,但更正日期('20.01.2010')未设置为TextBox . TextBox仍然包含'20.01.'有没有人有想法,如何更新TextBox?绑定模式默认为TwoWay .

这是TextBox的XAML:

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

2 回答

  • 1

    答案已经在这篇文章中提供:

    Silverlight Two Way Data Binding on Key Up

    EDIT: 对不起,我误解了这个问题,我的新答案如下

    您将Textbox绑定到患者的DateOfBirth属性,而不是ViewModel中的DateOfBirth属性:

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

    需要是

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

    并为Binding IsAsync = true添加额外的权限,以否决PropertyChanged事件可能会被忽略

  • 1

    试试吧

    Text =“{Binding Path = Name, UpdateSourceTrigger=PropertyChanged }”

相关问题