我正在使用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
?
<Window.DataContext>
<!--Automatically creates an instance of the class-->
<plugin:PluginViewModel SomeUnknownMagicHere/>
</Window.DataContext>
最后一个是首选。
我也可以将UIApplication
作为静态变量提供给某个地方,但这有点难看,对吗?