2010-08-11 102 views
2

我已经从TextBox绑定到属性。如果用户在文本框中写入日期值,它应该自动更正。 f.e:10年1月20日 - > 2010年1月20日如何在更正绑定属性后立即更新TextBox?

校正在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.DateOfBirthpatient.BirthdayString都在我的应用程序的数据模型值。因为用户应该能够输入生日的部分f.e.,所以需要将字符串作为字符串返回。如果生日不像“12。1967”那样完全知道。 我的问题是,如果用户输入一个像'20 .01.10'这样的日期,这个日期在属性中被纠正了,但是校正日期('20 .01.2010')没有被设置到文本框中。 TextBox仍然包含'20 .01'。 有没有人有一个想法,如何更新文本框?绑定模式默认为TwoWay。

下面是对TextBox的XAML:

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

回答

1

答案是在这个岗位媒体链接提供:

Silverlight Two Way Data Binding on Key Up

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

您将文本框绑定到病人的DateOfBirth属性而不是在您的视图模型的出生日期属性:

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

需求是

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

,加入一个额外的欢迎使用属性的结合IsAsync = true来否决这项PropertyChanged事件可能会被忽略

1

只是用

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

+0

是的,这将触发每个按键,应该为你工作。 – Kelly 2010-08-11 23:41:00