【发布时间】:2015-09-08 02:23:28
【问题描述】:
XAML 代码:
<DatePicker Date="{Binding DateTimeOffsetTest}"></DatePicker>
DataContext 设置为 App.ViewModel(ViewModel 的静态实例 - 仅用于测试!)
视图模型:
public class ViewModel : INotifyPropertyChanged
{
private DateTimeOffset _dateTimeOffsetTest = new DateTimeOffset(new DateTime(1980, 10, 10));
public DateTimeOffset DateTimeOffsetTest
{
get { return _dateTimeOffsetTest; }
set
{
_dateTimeOffsetTest = value;
//Was OnPropertyChanged(""); (Thanks to Will for fix)
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
为了测试,我只是将 ViewModel 初始化为 App 中的静态实例。 我将此代码添加到按钮的单击事件处理程序中:
App.ViewModel.DateTimeOffsetTest = new DateTimeOffset(new DateTime(1988, 09, 11));;
问题是 DatePicker 的行为类似于它的 OneTime 绑定。如果我更新 ViewModel 中的属性,DatePicker 将不会更新。我尝试将模式设置为 OneWay 并更改 UpdateSourceTrigger,但它不起作用。
有人有解决办法吗?
【问题讨论】:
-
如果一切正常,它应该可以工作。一切都不对。您需要添加属性的代码,以及如何从代码更新它的示例。毫无疑问,你那里有一个错误。
-
已编辑帖子,包含所有请求的信息。感谢您的帮助@Will
-
有了这些信息,我们就有了答案!一个简单的修复,你就可以上路了。
-
我使用您的修复程序编辑了帖子以避免混淆(因为这不是主要问题)。
标签: c# windows-phone-8 binding datepicker