【问题标题】:Multiple DataContext in a View vs MVVM? Is that right?视图与 MVVM 中的多个 DataContext?那正确吗?
【发布时间】:2011-06-27 20:19:09
【问题描述】:

我有以下问题:我正在构建一个聊天 WPF 应用程序,我希望用户在该应用程序上通过不同帐户连接到 GTalk。我制作了一个允许处理通信的 ViewModel,但我不知道哪种是处理 DataContext 的最佳方式。我认为每个连接实例都需要不同的 DataContext,但我不知道这是否正确,也不知道如何在 View 中定义多个 DataContext。

【问题讨论】:

    标签: c# wpf datacontext


    【解决方案1】:

    DataContext 为视图中的元素提供默认绑定源。它在可视化树中从父级继承到子级。您可以通过将任何元素绑定到其父 DataContext 的某些属性来更改任何元素的 DataContext。这是创建绑定到子视图模型的“孤岛”的常用方法。

    例如,如果您的用户视图模型具有 Address 属性,则可以在 AddressUserControl 中呈现它,如下所示:

    <StackPanel>
       ... elements bound to properties of User ...
    
       <AddressUserControl DataContext="{Binding Address}"/>
    </StackPanel>
    

    【讨论】:

      【解决方案2】:

      如果您有可变数量的帐户,则可以使用 ItemsControl。

      这背后的粗略想法:您可以将 ItemsControl 绑定到主 ViewModel 中的“子视图模型”列表,并为每个视图定义一个 DataTemplate(= 一个视图)。每个 DataTemplate 的 DataContext 会自动分配给 ViewModel 列表中的相应项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-08
        • 1970-01-01
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多