我已经从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.DateOfBirth
和 patient.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 回答
答案已经在这篇文章中提供:
Silverlight Two Way Data Binding on Key Up
EDIT: 对不起,我误解了这个问题,我的新答案如下
您将Textbox绑定到患者的DateOfBirth属性,而不是ViewModel中的DateOfBirth属性:
需要是
并为Binding IsAsync = true添加额外的权限,以否决PropertyChanged事件可能会被忽略
试试吧
Text =“{Binding Path = Name, UpdateSourceTrigger=PropertyChanged }”