WPF使用参数初始化ViewModel的正确方法

时间:2016-05-27 14:02:33

标签: c# wpf xaml mvvm

我正在使用Revit插件,我被迫通过一个命令。此命令有一个参数,我需要在Revit中更改信息:UIApplication

从命令我打开一个新的Window,这个Window通过XAML创建了它ViewModel

<Window.DataContext>
    <!--Automatically creates an instance of the class-->
    <plugin:PluginViewModel />
</Window.DataContext>

我想使用ViewModel参数创建我的UIApplication,该参数是通过我的Window的构造函数提供的。 这是唯一的方法吗?

public PluginWindow(UIApplication application)
{
   InitializeComponent();
   //DataContext has been initialized by InitializeComponent();
   var pluginVM = (PluginViewModel)DataContext;
   pluginVM.Application=application;
}

或者我应该通过命令来完成吗?

var pw = new PluginWindow();
var pluginVM = (PluginViewModel)pw.DataContext;
pluginVM.Application=application;

或者可以在Window

的XAML中进行
<Window.DataContext>
    <!--Automatically creates an instance of the class-->
    <plugin:PluginViewModel SomeUnknownMagicHere/>
</Window.DataContext>

最后一个是首选。

我也可以将UIApplication作为静态变量提供给某个地方,但这有点难看,对吗?

0 个答案:

没有答案