Windows Phone MVVM + Prism ---将事件转换为命令

时间:2014-03-06 03:34:44

标签: c# wpf mvvm windows-phone

我无法使用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的新手。

1 个答案:

答案 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}"/>