C# Windows Phone MVVM+;Prism---将事件转换为命令
我在使用MVVM设计和Prism工具包将eventhandler转换为命令时遇到问题 我也在使用WPToolkit——日期选择器。我需要将ValueChanged事件设置为命令 这是我的密码: MainPageViewModelC# Windows Phone MVVM+;Prism---将事件转换为命令,c#,wpf,mvvm,windows-phone,C#,Wpf,Mvvm,Windows Phone,我在使用MVVM设计和Prism工具包将eventhandler转换为命令时遇到问题 我也在使用WPToolkit——日期选择器。我需要将ValueChanged事件设置为命令 这是我的密码: MainPageViewModel _setDateOne = new DelegateCommand(delegate() { }); void picker1_ValueChanged(object sender, DateTimeValueChangedEventArgs e) {
_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
我知道XAML是错误的;我还不知道该怎么做
很抱歉,我对编程特别是MVVM非常熟悉。不需要
值更改
事件处理程序。在这里,您可以在DateOne的setter中执行将所选日期保存的过程:
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}"/>
如果您正在执行MVVM,请不要使用ValueChanged事件,而是在ViewModel和绑定到DatePickers值的属性设置器中实现INotifyPropertyChanged,调用您为valuechange命令计划的任何内容。我确实实现了NotifyPropertyChanged事件。ValueChanged中的代码正是我希望在值更改时发生的事情;不知道如何用命令实际实现它。此外,我还需要DateTimeValueChangedEventArgs e,以便知道将DateTime设置为什么。在DateOne的setter中,set{DateOne=value;CallYourMethodHere(value);}
由于我的绑定是双向的,所以我实际上不需要事件arg,那么?正确。您在DateOne属性中具有所需的值。
<toolkit:DatePicker Name="picker1" Value="{Binding DateOne, Mode=TwoWay}"/>