首先,它是一个基于文档的VSTO项目(因此那些附加的VSTO演练实际上并不起作用)。
我能够创建一个ActionPaneControl并且能够使用ElementHost在其中添加WPF用户控件。 启动它的代码如下:
ActionsPaneControl1 apc = new ActionsPaneControl1();
Globals.ThisWorkbook.ActionsPane.Controls.Add(apc);
Globals.ThisWorkbook.ActionsPane.Visible = true;
但是,我试图将参数传递给WPF用户控件。然后我意识到代码中没有地方指示此代码中的WPF用户控件。我的猜测是它与ElementHost有关。
有人可以帮忙吗?
谢谢
编辑: 这是ActionPaneControl1类
partial class ActionsPaneControl1
{
private System.ComponentModel.IContainer components = null;
.....
private void InitializeComponent()
{
this.elementHost1 = new
System.Windows.Forms.Integration.ElementHost();
this.elementHost2 = new
System.Windows.Forms.Integration.ElementHost();
this.ucWPF1 = new SWAPAEMonthlyReview.ucWPF();
.....
}
答案 0 :(得分:1)
感谢克里斯的回应,这启发了我的解决方案。 这是代码。您可以将字符串x更改为您想要的任何内容。
在WPF中放了这个
public ucWPF(string x)
{
InitializeComponent();
//do whatever with x
}
在ActionPaneControl1.cs中,把这个
partial class ActionsPaneControl1 : UserControl
{
public ActionsPaneControl1(string x)
{
InitializeComponent(x);
}
}
,最后一步是在ActionPaneControl1.Designer.cs中编辑以下内容
public void InitializeComponent(string x)
{
............
this.ucWPF1 = new SWAPAEMonthlyReview.ucWPF(x);
.......
}
答案 1 :(得分:0)
您可以通过ElementHost
。
public ActionsPaneControl1()
{
InitializeComponent();
if (elementHost1.Child != null)
{
var wpfControl = elementHost1.Child as WpfUserControlClassName;
}
}