如果在任务窗格中使用 wpf 控件,则不会引发 NewInspector 和 Close 事件
NewInspector and Close event does not raise if wpf control used in task pane
我在任务窗格中使用 WPF 控件时遇到问题。我使用 ElementHost
添加了它。因此,如果我显示任务窗格,则 NewInspector
和检查器 Close
不会再出现。
这是我的代码
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<ribbon>
<tabs>
<tab idMso="TabNewMailMessage">
<group label="MyGroup" id="mygroup">
<button id="addItemBlabla"
size="large"
label="Add Items"
onAction="AddItemsClick"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
//..Ribbon.cs file
public void AddItemsClick(Office.IRibbonControl ribbonControl)
{
Inspector inspector = ribbonControl.Context as Inspector;
if (this.taskPane == null)
{
this.taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(new MyUserControlThatContainsWpfElementHost(), "Label", this.inspector);
}
this.taskPane.Visible = true;
}
//.. ThisAddIn.cs file
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.Inspectors.NewInspector += this.Inspectors_NewInspector;
}
private void Inspectors_NewInspector(Outlook.Inspector Inspector)
{
//Does not work after task pane is shown!!!
}
更新
如果我在设计器中使用 Ribbon,则此示例有效,但我需要使用 XML version
我解决了我的问题。你可以在这里找到答案
https://social.msdn.microsoft.com/Forums/vstudio/en-US/73ea73da-8597-4152-938d-2ff99a82960f/newinspector-and-close-event-does-not-raise-if-wpf-control-used-in-task-pane?forum=vsto
我们需要在代码中添加 inspectors 字段:
//..ThisAddIn.cs
private Inspectors inspectors;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.inspectors = this.Application.Inspectors;
this.inspectors.NewInspector += this.Inspectors_NewInspector;
}
private void Inspectors_NewInspector(Outlook.Inspector Inspector)
{
//Now this works!!!
}
我在任务窗格中使用 WPF 控件时遇到问题。我使用 ElementHost
添加了它。因此,如果我显示任务窗格,则 NewInspector
和检查器 Close
不会再出现。
这是我的代码
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<ribbon>
<tabs>
<tab idMso="TabNewMailMessage">
<group label="MyGroup" id="mygroup">
<button id="addItemBlabla"
size="large"
label="Add Items"
onAction="AddItemsClick"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
//..Ribbon.cs file
public void AddItemsClick(Office.IRibbonControl ribbonControl)
{
Inspector inspector = ribbonControl.Context as Inspector;
if (this.taskPane == null)
{
this.taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(new MyUserControlThatContainsWpfElementHost(), "Label", this.inspector);
}
this.taskPane.Visible = true;
}
//.. ThisAddIn.cs file
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.Inspectors.NewInspector += this.Inspectors_NewInspector;
}
private void Inspectors_NewInspector(Outlook.Inspector Inspector)
{
//Does not work after task pane is shown!!!
}
更新 如果我在设计器中使用 Ribbon,则此示例有效,但我需要使用 XML version
我解决了我的问题。你可以在这里找到答案 https://social.msdn.microsoft.com/Forums/vstudio/en-US/73ea73da-8597-4152-938d-2ff99a82960f/newinspector-and-close-event-does-not-raise-if-wpf-control-used-in-task-pane?forum=vsto
我们需要在代码中添加 inspectors 字段:
//..ThisAddIn.cs
private Inspectors inspectors;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.inspectors = this.Application.Inspectors;
this.inspectors.NewInspector += this.Inspectors_NewInspector;
}
private void Inspectors_NewInspector(Outlook.Inspector Inspector)
{
//Now this works!!!
}