Wpf 在MVVM体系结构中,应在何处以及如何管理所选项目?

Wpf 在MVVM体系结构中,应在何处以及如何管理所选项目?,wpf,mvvm,command,selection,Wpf,Mvvm,Command,Selection,我有一个视图,允许用户选择一些数据:例如一些日期,并执行需要这些数据的命令 因此,在我的命令中,我应该有一个对所选日期的引用,但使该日期转到命令所在的ViewModel端的最佳做法是什么: 要在ViewModel中添加SelectedDate依赖项属性并在其上绑定我的视图,并在我的命令中通过“@this.SelectedDate”引用它(其中@this是对当前ViewModel的引用) 要让视图通过命令“Execute”方法的“parameter”传输它,并使用“DateTime select

我有一个视图,允许用户选择一些数据:例如一些日期,并执行需要这些数据的命令

因此,在我的命令中,我应该有一个对所选日期的引用,但使该日期转到命令所在的ViewModel端的最佳做法是什么:

  • 要在ViewModel中添加SelectedDate依赖项属性并在其上绑定我的视图,并在我的命令中通过“@this.SelectedDate”引用它(其中@this是对当前ViewModel的引用)
  • 要让视图通过命令“Execute”方法的“parameter”传输它,并使用“DateTime selectedDate=(DateTime)parameter;”引用日期
  • 任何其他解决方案

提前感谢。

对于第一部分,是的,我认为所选日期应该是ViewModel的(INotify)属性


我对你的命令应该从哪里获得这些信息没有强烈的意见,我认为这个属性是可以的

我绝对会将
SelectedDate
作为视图模型的依赖属性


我还要让命令从视图模型中获取
SelectedDate
。视图没有理由知道这方面的任何信息。

图书库的示例应用程序显示了使用MVVM处理所选项目的方法:ViewModel具有绑定到视图的“SelectedBook”属性。

感谢您的输入。对我来说,DP方法的主要优点是简单:视图只填充DPs,命令可以直接访问其数据。使用第二种方法,视图必须“序列化”数据以检查命令状态并执行命令,命令必须“取消序列化”数据。感谢您的贡献。DP解决方案似乎绝对是最好的。感谢这一有趣的输入,它证实了上述断言。