Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF和MVVM关于UI元素函数用法的问题_Wpf_Mvvm - Fatal编程技术网

WPF和MVVM关于UI元素函数用法的问题

WPF和MVVM关于UI元素函数用法的问题,wpf,mvvm,Wpf,Mvvm,我试图将一个已经存在的应用程序转移到MVVM模式,但这并不容易。例如,在计算复杂属性时,人们如何解决在UI方法上调用方法的问题 例如,如果我有一个画布,想要访问PointFromScreen方法,或者处理一个视口元素?是否必须创建派生类?重写这些方法时,我首先要考虑的是,它们是否是特定于用户界面的或操作数据的。 如果您的PointFromScreen方法是特定于UI的,那么您根本不必将其移动到MVVM中,而是保持原样 但是,如果它正在更改基础模型,则必须生成一个新命令(派生ICommand),并

我试图将一个已经存在的应用程序转移到MVVM模式,但这并不容易。例如,在计算复杂属性时,人们如何解决在UI方法上调用方法的问题


例如,如果我有一个画布,想要访问PointFromScreen方法,或者处理一个视口元素?是否必须创建派生类?

重写这些方法时,我首先要考虑的是,它们是否是特定于用户界面的或操作数据的。 如果您的
PointFromScreen
方法是特定于UI的,那么您根本不必将其移动到MVVM中,而是保持原样

但是,如果它正在更改基础模型,则必须生成一个新命令(派生
ICommand
),并通过XAML中的
CommandProperties
传递属性


希望这能有所帮助?

因此在本例中,我需要更新画布对象的位置。因此,对象位置可以绑定到VM中的属性,但该属性依赖于获取Canvas.PointFromScreen可能您可以使用
MouseDown
事件:不幸的是,它是以编程方式完成的,不基于mouseclick,但该事件仍然需要调用Canvas对象上的PointToScreen,我想。那么这是来自模型的吗?当它来自代码时?在这种情况下,它应该会影响ViewModel,然后ViewModel将触发OnPropertyChanged。为此,您可能需要在viewmodel中创建一些属性,sry。我认为这基本上是我所能帮助的范围(只要我不知道屏幕上的具体点在做什么,代码将如何执行等等),也许你应该在你有疑问的地方添加一个代码示例。