1

我正在使用 MVVM 和 Castle Windsor 开始我的第一个 WPF 项目。我遵循将视图模型注入其视图的构造函数的相当标准的方法,然后将其 DataContext 设置为视图模型。我不清楚的是如何/在哪里执行我想在窗口加载后立即发生的任何 UI“初始化”(在我的情况下,我想实例化一些用户控件“小部件”并将它们放在窗口的画布)。

大概我不能在窗口视图模型的构造函数中执行此操作,因为它会在视图的 InitialiseComponent 被调用之前被调用。此外,我什至如何从不了解视图的视图模型中引用画布?

作为尝试解决此问题的一部分,我创建了一个“DesktopManager”组件,负责将用户控件添加到画布,但我得到了循环引用:-

  • 视图显然依赖于视图模型
  • DesktopManager 依赖于视图(它需要访问 Canvas),
  • 视图模型依赖于 DesktopManager(因此它可以告诉 DesktopManager 创建小部件)。

不过,DesktopManager 仍然对我没有帮助 - 回到我之前的问题,我不知道如何/在哪里调用它来创建小部件。我显然是以错误的方式解决所有这些问题,也许回答我之前的问题也可以解决这个问题!

任何建议表示赞赏。

安德鲁

4

1 回答 1

1

如果您正在寻找一种在视图加载后在视图模型中执行代码的方法,我建议您将视图的 Loaded 事件绑定到视图模型中的命令。

在这里寻找一种将事件绑定到命令的方法: http ://www.danharman.net/2011/08/05/binding-wpf-events-to-mvvm-viewmodel-commands/

于 2012-05-28T15:43:45.460 回答