Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
使用MVVM和WCF的WPF TreeView绑定_Wpf_Wcf_Data Binding_Mvvm_Treeview - Fatal编程技术网

使用MVVM和WCF的WPF TreeView绑定

使用MVVM和WCF的WPF TreeView绑定,wpf,wcf,data-binding,mvvm,treeview,Wpf,Wcf,Data Binding,Mvvm,Treeview,我目前正在使用MVVM模式开发一个WPF应用程序。视图、模型、视图模型都位于单独的类库中 我的视图有一个TreeView控件,应该使用数据绑定来填充它 我从通过模型访问的WCF服务获取数据。我的模型有一个引用WCF服务的服务,并从WCF调用一个方法来检索嵌套集合 ViewModel使数据可用于视图。除了在树视图中显示数据外,检索数据等都可以正常工作 我的TreeView的XAML如下所示 <TreeView Grid.Row="1" ItemsSource="{Binding Custom

我目前正在使用MVVM模式开发一个WPF应用程序。视图、模型、视图模型都位于单独的类库中

我的视图有一个TreeView控件,应该使用数据绑定来填充它

我从通过模型访问的WCF服务获取数据。我的模型有一个引用WCF服务的服务,并从WCF调用一个方法来检索嵌套集合

ViewModel使数据可用于视图。除了在树视图中显示数据外,检索数据等都可以正常工作

我的TreeView的XAML如下所示

<TreeView Grid.Row="1" ItemsSource="{Binding CustomerTree}" >
            <TreeView.Resources>
                <HierarchicalDataTemplate DataType="{x:Type ....}" ItemsSource="{Binding Path=Children}">
                    <TextBlock Text="{Binding Path=Name}"/>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type ....}" ItemsSource="{Binding Path=Children}">
                    <TextBlock Text="{Binding Path=ID}"/>
                </HierarchicalDataTemplate>
            </TreeView.Resources>
        </TreeView>

DataType=“{x:Type….}属性需要某个类型,该类型应该是嵌套集合中的类型之一,但视图不知道哪些类型可用。我的ViewModel可以使用model.ServiceReference.customer访问服务引用在模型中的类型,例如客户类型

模型是添加服务引用的正确位置吗?我应该如何使我的树状视图显示数据

谢谢


Grant

为了达到所需的抽象级别,您将不得不给自己带来一些不便。解决此问题需要多个步骤:

  • 不要为模板定义
    数据类型
    (改用
    x:Key
    )。这就是造成不便的原因:模板将不再自动应用。但从好的方面来说,您只是去掉了对特定类型名称的引用
  • 使用
    TreeView
    上的
    ItemTemplate
    ItemTemplateSelector
    属性为每个项目手动选择
    HierarchicalDataTemplate
  • 对于第二步,提供了这两种技术的描述和示例


    最终的结果是,您将能够选择所需的模板,而无需引用XAML中的特定类型,而是使用数据绑定对象上的属性。

    谢谢。我将在明天进行尝试。我遵循了本教程。现在我更清楚了。