Этого можно добиться с помощью пользовательского элемента управления Win Forms. Я работал над проектом, в котором мы должны были расширить MS Word и нуждались в этой функциональности, но тот же пример применим и к Excel.
Еще один интересный способ, на который я наткнулся в сети, заключается в том, чтобы иметь пользовательский элемент управления Windows и размещать пользовательский элемент управления WPF внутри элемента управления Windows! Это, конечно, позволяет вам воспользоваться всеми замечательными инструментами, которые вы получаете с WPF, вот пример:
1) Перетащите ToggleButton на ленту (Visual Designer). Это будет использоваться, чтобы скрыть панель задач. Использование ToggleButton — хороший выбор, так как при нажатии он выделяется.
2) Добавьте приведенный ниже код в событие щелчка ToggleButton.
Globals.ThisAddIn.TaskPane.Visible = ((RibbonToggleButton)sender).Checked;
3) Добавьте ссылку из вашего проекта на следующую сборку - WindowsFormsIntegration
4) В файле ThisAddIn.cs добавьте две директивы using, перечисленные ниже:
using Microsoft.Office.Tools;
using System.Windows.Forms.Integration;
5) Добавьте два пользовательских элемента управления
5.1) Пользовательский элемент управления (имя - taskPaneControl1)
5.2) Пользовательский контроль (WPF), (имя - кон)
Использование имен, которые я использовал, поможет при копировании/вставке приведенного ниже кода, но в любом случае измените его, если хотите.
6) Добавьте приведенный ниже код в класс ThisAddIn.cs.
public CustomTaskPane TaskPane
{
get{return taskPaneValue;}
}
private TaskPaneControl taskPaneControl1;
private CustomTaskPane taskPaneValue;
private WpfControl con;
internal void AddTaskPane()
{
ElementHost host = new ElementHost();
con = new WpfControl();
host.Child = con;
host.Dock = DockStyle.Fill;
taskPaneControl1 = new TaskPaneControl();
taskPaneControl1.Controls.Add(host);
taskPaneValue = this.CustomTaskPanes.Add(taskPaneControl1, "My Taskpane");
taskPaneValue.Visible = true;
}
6) Добавьте два приведенных ниже кода в событие запуска в файле ThisAddIn.cs.
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
AddTaskPane();
taskPaneValue.Visible = false;
}
Когда приложение MS Office открыто, панель задач будет скрыта, переключите свойство Visible, чтобы изменить это в событии Startup. Перейдите к ToggleButton и нажмите его несколько раз, чтобы убедиться, что панель задач отображается должным образом.
Также взгляните на следующую ссылку, откуда пришла большая часть моего кода — http://xamlcoder.com/cs/blogs/joe/archive/2007/07/17/using-wpf-with-vsto-office-2007.aspx а>
person
Denys Wessels
schedule
22.11.2011