如何在C#/ Silverlight中绑定DatePicker的“日期”?

时间:2011-11-25 14:30:22

标签: c# silverlight datepicker

如何正确绑定Silverlight Toolkit中DatePicker的“日期”?我使用以下XAML代码:

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

如果我选择日期,我的ViewModel会收到更改。但是我的View没有收到ViewModel的起始值?或者我该如何设置当前日期?

编辑:“TwoWay”-Binding与同一View / ViewModel中的TextBox一起使用。我认为我的问题是我不确定应该使用什么属性来绑定DatePicker。我应该使用Text,DisplayDate还是......其他?

5 个答案:

答案 0 :(得分:7)

尝试与SelectedDate绑定:

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

答案 1 :(得分:1)

只需将ViewModels属性绑定到DatePicker的Text属性(为了更好地兼容Converter)。

另外,请不要忘记实施INotifyPropertyChangedTwoWay绑定模式

答案 2 :(得分:1)

我遇到了DatePicker SelectedDate绑定到包含带有日期属性的子对象的数据上下文的问题。控件不会显示对基础日期属性的更改。当我向数据上下文添加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的第一天,所以我不知道是否有更好的方法来解决问题。)

答案 3 :(得分:0)

可能你的viewmodel并没有暗示INotifyPropertyChanged - 绑定到位但控件不知道它绑定的属性已经改变了。关于如何从JoshSmith中获取INotifyPropertyChanged this one的网上有很多(太多!)示例。 或者,您可以将DateTime属性设置为依赖属性。

答案 4 :(得分:0)

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

MSDN Article on PropertyChanged event