Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在更正绑定属性后立即更新文本框?_C#_Wpf_Data Binding_Xaml - Fatal编程技术网

C# 如何在更正绑定属性后立即更新文本框?

C# 如何在更正绑定属性后立即更新文本框?,c#,wpf,data-binding,xaml,C#,Wpf,Data Binding,Xaml,我已将文本框绑定到属性。如果用户在文本框中写入日期值,则应自动更正。f、 e:20.01.10->20.01.2010 更正在Property集合块中完成: public String DateOfBirth { get { if (patient.DateOfBirth != DateTime.MinValue) return patient.DateOfBirth.ToString("dd.MM.yyyy"); else

我已将文本框绑定到属性。如果用户在文本框中写入日期值,则应自动更正。f、 e:20.01.10->20.01.2010

更正在Property集合块中完成:

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”)未设置到文本框。文本框仍然包含“20.01” 有人知道如何更新文本框吗?默认情况下,绑定模式应为双向

以下是文本框的XAML:

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

这篇文章提供了答案:

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

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

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


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

是的,这将为每次按键触发,应该对您有效。
<Binding Path="OrderVM.DateOfBirth" ...