WPF 将 DataContext 设置为没有默认构造函数的 ViewModel

Ali*_*ias 1 c# wpf xaml mvvm mvvm-toolkit

我有一个ViewModel接受多个构造函数参数的。据我了解,因此设置 View 的 DataContext 的唯一方法是使用隐藏代码。

这有其缺点:

  • Visual Studio 不会显示ViewModel正在构造的视图的智能
  • 无法ViewModel在 XAML 设计器中查看我的构造函数中定义的设计时数据,因为设计器只是中断了

我有什么选择?

我希望有一个ViewModel可以接受构造函数参数,具有设计时数据,并且我的 Visual Studio 智能为我提供有关我的成员的建议ViewModel,以便我可以获得良好的设计体验。

附言。我正在使用Microsoft 的MVVM Toolkit / Windows Community Toolkit,但如果您能提供有关如何实现我的最终目标的答案,我将不胜感激。谢谢。

mm8*_*mm8 6

我有什么选择?

一种常见的方法是使用无参数构造函数创建单独的设计时视图模型类,并将设计时数据上下文设置为此类型:

<Window ... d:DataContext="{d:DesignInstance Type=local:DesignTimeViewModel, IsDesignTimeCreatable=True}"
Run Code Online (Sandbox Code Playgroud)

您不应该做的是根据 Visual Studio 中的设计器的工作方式来设计您的应用程序并定义您的类。