如何绑定“日期”c# /Silverlight中的日期picker

本文关键字:日期 Silverlight picker 绑定 何绑定 | 更新日期: 2023-09-27 18:15:57

我如何从Silverlight工具包正确绑定DatePicker的"日期" ?我使用以下xhtml代码:

<sdk:DatePicker 
x:Name="DpDate" 
Width="200" 
Height="25" 
DisplayDate="{Binding Date, Mode=TwoWay}" />

如果我选择一个日期,我的ViewModel接收更改。但是我的视图没有从ViewModel接收开始值?或者如何设置当前日期?

Edit:"双向"绑定在同一个View/ViewModel中的文本框中工作。我认为我的问题是我不确定我应该为DatePicker的绑定使用什么属性。我应该使用Text, DisplayDate还是别的?

如何绑定“日期”c# /Silverlight中的日期picker

尝试绑定SelectedDate:

<sdk:DatePicker SelectedDate="{Binding Date,Mode=TwoWay}"/>

将您的ViewModels属性绑定到DatePicker的文本属性(为了更好的兼容性使用Converter)。

也不要忘记实现INotifyPropertyChangedTwoWay绑定模式

我有同样的问题,DatePickerSelectedDate上绑定到包含具有日期属性的子对象的数据上下文。控件不会显示对基础日期属性的更改。当我在数据上下文中添加getter/setter来更新子对象的日期时,它就像预期的那样工作了。

这行不通:

 <sdk:DatePicker x:Name="FromDate" SelectedDate="{Binding Child.TheDate, Mode=TwoWay}"

这工作:

 <sdk:DatePicker x:Name="FromDate" SelectedDate="{Binding TheDate, Mode=TwoWay}"

(这是我第一天使用WPF/Silverlight,所以我不知道是否有更好的方法来解决这个问题。)

可能你的视图模型没有实现INotifyPropertyChanged -绑定是到位的,但控件不知道它绑定到的属性已经改变。web上有很多(太多了!)关于如何实现INotifyPropertyChanged的例子,这个来自JoshSmith是ok的。或者,您可以将DateTime属性设置为依赖属性。

要将数据从ViewModel传递到View,您需要引发PropertyChanged()事件。

MSDN文章关于PropertyChanged事件