【问题标题】:Setting multiple DataContexts in WPF C#在 WPF C# 中设置多个 DataContexts
【发布时间】:2012-05-28 11:35:45
【问题描述】:

如何设置多个dataContexts?我有模型和视图模型 - 例如,我可以在 Windows.DataContext 中的 XAML 中编写 一个 数据上下文

<Window.DataContext>
    <v:FacebookViewModel/>
</Window.DataContext>

然后在构造函数或按钮单击中,我可以写_faceViewModel = (FacebookViewModel)this.DataContext;。这将设置 dataContext。

我的问题:我有 2 个 ViewModel,我想通过单击一个按钮或者如果您有更好的想法来更改我的第二个 ViewModel TwitterViewModel 的数据上下文 - 怎么做?我现在正在学习 WPF,对此我真的很陌生...

【问题讨论】:

    标签: c# wpf xaml mvvm datacontext


    【解决方案1】:

    您可以使用 DataContext 属性以编程方式更改它。我认为更好的方法是为您的 ViewModel 编写一个 DataTemplates 并将它们设置在所需的容器中(如果您的 viewmodel 具有不同的外观)。如果您的虚拟机具有相同的外观,那么您可能应该考虑在一个视图模型后面封装不同的逻辑。

    class VM 
    {
      private IVMImplementation manager = null;
    
      public VM(IVMImplementation manager) { this.manager = manager; }
    
      public SetManager(IVMImplementation manager) { this.manager = manager; }
    }
    class TwitterVMManager : IVMImplementation  {}
    class FacebookVMManager : IVMImplementation  {}
    

    我相信它会比更改数据上下文更快..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 2023-04-01
      • 1970-01-01
      • 2015-01-24
      相关资源
      最近更新 更多