【发布时间】:2014-03-06 03:34:43
【问题描述】:
我在使用 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。
【问题讨论】:
-
如果您正在执行 MVVM,请不要使用 ValueChanged 事件,而是在您的 ViewModel 和绑定到 DatePickers 的属性的设置器中实现 INotifyPropertyChanged 调用您计划的任何内容valuechange 命令。
-
我确实实现了 NotifyPropertyChanged 事件。 ValueChanged 中的代码正是我想要在值更改时发生的事情;不知道如何用命令实际实现它。而且,我需要 DateTimeValueChangedEventArgs e 才能知道将我的 DateTime 设置为什么。
-
在 DateOne 的设置器中,
set { DateOne = value; CallYourMethodHere(value); } -
既然我的绑定是TwoWay,那么我实际上不需要事件arg,那么呢?
-
正确。您在 DateOne 属性中拥有所需的值。
标签: c# wpf mvvm windows-phone