c# - 如何在修正绑定(bind)属性后立即更新TextBox?

标签 c# wpf data-binding xaml

我已经将文本框绑定(bind)到属性。如果用户将日期值写入文本框,则应自动更正。例如:2010年1月20日 -> 2010年1月20日

更正是在属性设置 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");
    }
}

patent.DateOfBirthpatent.BirthdayString 是我的应用程序数据模型中的值。需要将生日作为字符串返回,因为用户应该能够输入生日的部分内容,例如如果生日不完全已知,例如“12.1967”。 我的问题是,如果用户输入像“20.01.10”这样的日期,则会在属性中更正该日期,但更正后的日期(“20.01.2010”)不会设置到文本框。文本框仍包含“20.01”。 有人知道如何更新文本框吗?绑定(bind)模式默认为TwoWay。

这是文本框的 XAML:

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

最佳答案

尝试一下

Text="{绑定(bind)路径=名称,UpdateSourceTrigger=PropertyChanged}"

关于c# - 如何在修正绑定(bind)属性后立即更新TextBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3456641/

相关文章:

c# - 从 javascript 调用 c# 函数背后的代码

c# - 通过构建器模式使用 List<T> - c#

wpf - Rhino模拟单元测试方法args

wpf - 命令执行对话框关闭后 MVVM UI 更新

wpf - WPF RichTextBox和'\t'

c# - 如何在WPF中绑定(bind)两个DataGrid列宽度?

c# - Visual Studio 2015 Intellisense 中没有 Bower 包

c# - 当有两个类型具有相同的名称时,如何消除监 window 口中的类型歧义

c# - WPF 自定义控件在 View 模型子属性更改时重新呈现

c# - 数据绑定(bind)到只读属性