如何将多个 View 的 DataContext 设置为一个 ViewModel 实例

语法错误

我正在为我的视图使用 ViewModelLocator,它在 Bootstrapper 中使用以下方法进行配置:

protected override void ConfigureViewModelLocator()
{
    base.ConfigureViewModelLocator();

    ViewModelLocationProvider.Register<ViewA, ViewABViewModel>();
    ViewModelLocationProvider.Register<ViewB, ViewABViewModel>();
}

它工作正常,但为我的 2 个视图创建了两个单独的 ViewModel 实例。我希望我的两个视图都使用同一个 ViewModel 实例。

果矮人

查看源码发现默认为每个视图创建一个新实例的问题:

static Func<Type, object> _defaultViewModelFactory = type => Activator.CreateInstance(type);

Prism 允许为所有类型或仅特殊类型定义此方法。应该首选第二种情况。

ViewModelLocationProvider.Register<ViewA, ViewABViewModel>();

仅将 View 和 ViewModel 的类型链接在一起,没有定义工厂。这意味着为每个视图创建一个新实例。要在多个视图中使用实例,您需要定义工厂方法。创建一个 ViewModel 实例

ViewABViewModel vm = new ViewABViewModel();

并通过返回这个已经准备好的实例来为您的视图注册工厂方法

ViewModelLocationProvider.Register<ViewA>(() => vm);
ViewModelLocationProvider.Register<ViewB>(() => vm);

Prism 现在采用这个实例而不是创建一个新实例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MVVM当ViewModel使用异步时如何设置datacontext

来自分类Dev

从另一个ViewModel类将视图绑定到DataContext

来自分类Dev

如何将DataContext设置为self

来自分类Dev

Catel:多个 ViewModel 一个 View。是否可以?

来自分类Dev

SwiftUI MVVM如何将ViewModel函数的回调设置为View

来自分类Dev

ViewModel的多个实例

来自分类Dev

将UserControl的DataContext绑定到子ViewModel

来自分类Dev

声明一个View + ViewModel为内部

来自分类Dev

将实例设置为null或使用new创建一个新实例

来自分类Dev

呈现/实例化View时通知ViewModel

来自分类Dev

将模型的另一个实例分配给ViewModel

来自分类Dev

如何将MediaPlayer的一个实例用于多个片段

来自分类Dev

如何将多个QTextBrowser实例打印到一个PDF文件中?

来自分类Dev

如何设置另一个实例的实例值?

来自分类Dev

(ViewModel)DataContext返回null

来自分类Dev

如何执行一个规则,其中仅一个类的一个实例可以将某个参数设置为true?

来自分类Dev

将一个类的实例变量设置为另一类的实例变量,然后

来自分类Dev

将模型中字段的默认值设置为另一个模型实例

来自分类Dev

在另一个活动中加载 ViewModel 实例

来自分类Dev

如何将一个类的实例方法与另一个实例化?

来自分类Dev

如何将一个类的实例方法与另一个实例化?

来自分类Dev

如何将一个对象的实例分配给一个为空的指针?

来自分类Dev

如何将一个 Model 中的多个值分配到 ViewModel 中的 List<T> 中?

来自分类Dev

如何将信息从ViewModel转换为在View中显示

来自分类Dev

如何将数据从ViewModel层传递到View层

来自分类Dev

将 DataContext 设置为 StaticResource 的属性

来自分类Dev

为什么绑定到我的课不是工作的一个实例this.DataContext =这个时

来自分类Dev

WPF:XAML:给 DataContext 一个名称而不实例化它

来自分类Dev

在XAML中设置时访问代码中的DataContext实例

Related 相关文章

  1. 1

    MVVM当ViewModel使用异步时如何设置datacontext

  2. 2

    从另一个ViewModel类将视图绑定到DataContext

  3. 3

    如何将DataContext设置为self

  4. 4

    Catel:多个 ViewModel 一个 View。是否可以?

  5. 5

    SwiftUI MVVM如何将ViewModel函数的回调设置为View

  6. 6

    ViewModel的多个实例

  7. 7

    将UserControl的DataContext绑定到子ViewModel

  8. 8

    声明一个View + ViewModel为内部

  9. 9

    将实例设置为null或使用new创建一个新实例

  10. 10

    呈现/实例化View时通知ViewModel

  11. 11

    将模型的另一个实例分配给ViewModel

  12. 12

    如何将MediaPlayer的一个实例用于多个片段

  13. 13

    如何将多个QTextBrowser实例打印到一个PDF文件中?

  14. 14

    如何设置另一个实例的实例值?

  15. 15

    (ViewModel)DataContext返回null

  16. 16

    如何执行一个规则,其中仅一个类的一个实例可以将某个参数设置为true?

  17. 17

    将一个类的实例变量设置为另一类的实例变量,然后

  18. 18

    将模型中字段的默认值设置为另一个模型实例

  19. 19

    在另一个活动中加载 ViewModel 实例

  20. 20

    如何将一个类的实例方法与另一个实例化?

  21. 21

    如何将一个类的实例方法与另一个实例化?

  22. 22

    如何将一个对象的实例分配给一个为空的指针?

  23. 23

    如何将一个 Model 中的多个值分配到 ViewModel 中的 List<T> 中?

  24. 24

    如何将信息从ViewModel转换为在View中显示

  25. 25

    如何将数据从ViewModel层传递到View层

  26. 26

    将 DataContext 设置为 StaticResource 的属性

  27. 27

    为什么绑定到我的课不是工作的一个实例this.DataContext =这个时

  28. 28

    WPF:XAML:给 DataContext 一个名称而不实例化它

  29. 29

    在XAML中设置时访问代码中的DataContext实例

热门标签

归档