我无法使用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的新手。
答案 0 :(得分:1)
此处不需要ValueChanged
事件处理程序,您可以执行在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}"/>