![](/img/trans.png)
[英]Page navigation using HubTiles, PRISM, and MVVM on Windows Phone
[英]Windows Phone MVVM + Prism — Convert Event to a command
我在使用MVVM设计和Prism工具包将事件处理程序转换为命令时遇到麻烦。
我也在使用WPToolkit-DatePicker。 我需要将ValueChanged事件设置为命令。
这是我的代码:
MainPageViewModel
_setDateOne = new DelegateCommand(delegate()
{ });
void picker1_ValueChanged(object sender, DateTimeValueChangedEventArgs e)
{
using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isf.FileExists("DateOne"))
isf.DeleteFile("DateOne");
IsolatedStorageSettings.ApplicationSettings["DateOne"] = e.NewDateTime.Value;
IsolatedStorageSettings.ApplicationSettings.Save();
}
}
XAML
<toolkit:DatePicker Name="picker1" ValueChanged="picker1_ValueChanged" Value="{Binding DateOne, ElementName=this, Mode=TwoWay}"/>
我知道XAML是错误的; 我还不知道该怎么做。
抱歉,我是编程新手,尤其是MVVM。
在这里不需要ValueChanged
事件处理程序,您可以执行将所选日期保存在DateOne
setter中的DateOne
:
private DateTime _dateOne;
public DateTime DateOne
{
get { return _dateOne; }
set
{
_dateOne = value;
SaveDate(value);
NotifyPropertyChanged("DateOne");
}
}
SaveDate(DateTime date)
{
using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isf.FileExists("DateOne"))
isf.DeleteFile("DateOne");
IsolatedStorageSettings.ApplicationSettings["DateOne"] = date;
IsolatedStorageSettings.ApplicationSettings.Save();
}
}
并假设页面的DataContext
已正确设置,则通过这种方式绑定就足够了:
<toolkit:DatePicker Name="picker1" Value="{Binding DateOne, Mode=TwoWay}"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.