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
.net 在M-V-VM中,我的代码去了哪里?_.net_Wpf_Design Patterns_Mvvm - Fatal编程技术网

.net 在M-V-VM中,我的代码去了哪里?

.net 在M-V-VM中,我的代码去了哪里?,.net,wpf,design-patterns,mvvm,.net,Wpf,Design Patterns,Mvvm,所以,我希望这是一个非常基本的问题 我有一个通过添加服务引用添加的web服务。它有一些方法来获取列表和数据库中特定表的详细信息 我试图做的是按如下方式设置UI: 应用程序加载 加载服务代理 调用GetList;方法在列表框控件中显示结果 用户双击列表框中的项目,显示带有详细视图的模式对话框 我对使用MVVM非常陌生,因此非常感谢您的帮助 其他信息: // Service Interface (simplification): interface IService { IEnumera

所以,我希望这是一个非常基本的问题

我有一个通过添加服务引用添加的web服务。它有一些方法来获取列表和数据库中特定表的详细信息

我试图做的是按如下方式设置UI:

应用程序加载 加载服务代理 调用GetList;方法在列表框控件中显示结果 用户双击列表框中的项目,显示带有详细视图的模式对话框 我对使用MVVM非常陌生,因此非常感谢您的帮助

其他信息:

// Service Interface (simplification):

interface IService 
{
    IEnumerable<MyObject> GetList();
    MyObject GetDetail(int id);
}

// Data object (simplification)
class MyObject
{
    public int ID { get; set; }
    public string Name { get; set; }
}
具体问题:

我的ViewModel类会是什么样子? 处理双击的代码在哪里? 在用户控件内部? 那么命令呢,这是一个很好的应用程序吗? 很抱歉说了这么多细节,但我对整个事情都很陌生,而且我没有受过足够的教育,无法提出正确的问题

我从wpf.codeplex.com上查看了MVVM示例,但有些东西对我来说还不太合适,因为它看起来非常混乱

您的虚拟机将具有: 包含绑定到列表框的项的ObservableCollection。 绑定到列表中当前选定项的CurrentItem 绑定到双击并调用逻辑以显示详细视图的DelegateCommand请参阅MVVM实现此目的的方法,类似于服务或事件聚合器的方法 调用GetList然后填充此集合的逻辑 处理双击的代码将转到上面的VM 您的虚拟机将具有: 包含绑定到列表框的项的ObservableCollection。 绑定到列表中当前选定项的CurrentItem 绑定到双击并调用逻辑以显示详细视图的DelegateCommand请参阅MVVM实现此目的的方法,类似于服务或事件聚合器的方法 调用GetList然后填充此集合的逻辑 处理双击的代码将转到上面的VM
您将有2个视图模型,因为您有2个视图

1视图模型将具有

您的服务代理 列表 ShowDetailForstring selectedItemFromList 这将创建一个新的VM2实例,并在ctor中将其传递给服务代理,并在VM2上调用ShowDetail。 2视图模型将具有

MyObject如果只是messagebox,则不需要ViewModel ShowDetailint id 拥有ViewModel后,使用WPF绑定和命令将数据从VM连接到XAML


用于用户控制的MVVM变得有点复杂,因此如果可能的话,暂时不要使用UserControls。

您将有两个ViewModels,因为您有两个视图

1视图模型将具有

您的服务代理 列表 ShowDetailForstring selectedItemFromList 这将创建一个新的VM2实例,并在ctor中将其传递给服务代理,并在VM2上调用ShowDetail。 2视图模型将具有

MyObject如果只是messagebox,则不需要ViewModel ShowDetailint id 拥有ViewModel后,使用WPF绑定和命令将数据从VM连接到XAML


用于用户控制的MVVM变得有点复杂,因此如果可能,现在请远离用户控制。

请参阅我的项目中的RegularExpressionViewModel示例

大部分代码都将放在ViewModel中。视图中应该包含的唯一代码是将视图的事件关联到ViewModel的代码。通常视图中不需要代码,因为大多数布线都可以通过数据绑定来处理


我使用带有依赖项注入的表示抽象层与对话框进行通信。

请参阅我的项目中的RegularExpressionViewModel示例

大部分代码都将放在ViewModel中。视图中应该包含的唯一代码是将视图的事件关联到ViewModel的代码。通常视图中不需要代码,因为大多数布线都可以通过数据绑定来处理

我使用带有依赖注入的表示抽象层与对话框进行通信

MainWindow
    MyObjectViewUserControl 
        Displays list
        Opens modal window on double click