gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:37:16 25 4
gpt4 key购买 nike

我无法使用 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 中的程序:

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您的页面已正确设置,以这种方式绑定(bind)就足够了:
<toolkit:DatePicker Name="picker1" Value="{Binding DateOne, Mode=TwoWay}"/>

关于c# - Windows Phone MVVM + Prism --- 将事件转换为命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com