我有一个带有日期的文本框,我想将其转换为双向绑定的日期选择器。但不幸的是,日期选择器没有显示日期。
<TextBox Grid.Row="1"
Grid.Column="4"
IsReadOnly="False"
Text="{Binding Path=BirthDate,
Mode=OneWay,
StringFormat='dd/MM/yyyy'}" />
以下代码不起作用,selecteddate显示为空...(虽然其中有值)
<DatePicker Grid.Row="1"
Grid.Column="4" FirstDayOfWeek="Monday" SelectedDate="{Binding BirthDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ></DatePicker>
在应用程序的另一个位置,我还有一个可以工作的日期选择器:
<DatePicker x:Name="DatePicker"
Grid.Row="3"
Grid.Column="1"
FirstDayOfWeek="Monday"
SelectedDate="{Binding Parameter.PAR_Date,
Mode=TwoWay}" />
我无法看清我做错了什么,看起来很简单。
我可以在日期选择器中输入一个日期,但这很有用......所以非常奇怪......任何想法都会受到欢迎......
编辑:
通过使用snoop并查看datepicker上的绑定更近了一步,它似乎有一个错误,我似乎有一个不同的预期类型:
System.Windows.Data Error: 1 : Cannot create default converter to perform 'two-way' conversions between types 'EVD.Framework.NullableDateTime' and 'System.Nullable`1[System.DateTime]'. Consider using Converter property of Binding. BindingExpression:Path=Birthdate; DataItem='SomeModel' (HashCode=31671132); target element is 'DatePicker' (Name=''); target property is 'SelectedDate' (type 'Nullable`1')
System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='04/10/1929' BindingExpression:Path=Birthdate; DataItem='SomeModel' (HashCode=31671132); target element is 'DatePicker' (Name=''); target property is 'SelectedDate' (type 'Nullable`1')
编辑2:
就是这样,在代码中datetime是一个NullableDateTime。感谢大家投入想法,尤其是Viv。每个人都有一个体面的建议投票: - )
答案 0 :(得分:2)
本文很好地解释了StringFormat: http://elegantcode.com/2009/04/07/wpf-stringformat-in-xaml-with-the-stringformat-attribute/
格式化时,您需要记住使用 {0} 。