我已经从TextBox绑定到Property了。如果用户将日期值写入TextBox,则应自动更正。 f.e。:20.01.10 - > 2010年1月20日
校正在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.DateOfBirth
和patient.BirthdayString
是我的应用程序的数据模型中的值。需要将生日作为字符串返回,因为用户应该能够输入生日的部分内容,例如。如果生日不完全像'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>
答案 0 :(得分:1)
这篇文章已经提供了答案:
Silverlight Two Way Data Binding on Key Up
编辑:抱歉,我误解了这个问题,我的新答案在下面
您将Textbox绑定到患者的DateOfBirth属性,而不是ViewModel中的DateOfBirth属性:
<Binding Path="OrderVM.Patient.DateOfBirth" ...
需要
<Binding Path="OrderVM.DateOfBirth" ...
并为Binding IsAsync = true添加额外的权利,以否决可能忽略PropertyChanged事件
答案 1 :(得分:1)
只需尝试
Text =“{Binding Path = Name, UpdateSourceTrigger = PropertyChanged }”