用于调用 WPF 窗口的 Excel 按钮
本文关键字:Excel 按钮 窗口 调用 WPF 用于 | 更新日期: 2023-09-27 18:31:30
我有一个 CSharp (.NET) 应用程序,该应用程序在 Excel 中创建了一个带有功能区的加载项。我在功能区中有按钮。我希望能够单击按钮,然后打开 WPF 窗口。
代码看起来像
private void OnNewButtonAction(object sender, RibbonControlEventArgs e)
{
var window = new View.MyWindow()
{
DataContext = new ViewModel.MyViewModel(),
};
window.Show();
}
其中 MyWindow 是 System.Windows.Window 类型的类。MyWindow 有自己的 xaml 文件,其中包含单选按钮、文本字段等。当我尝试运行它时 - 然后单击按钮,我得到一个 XML 解析异常 - "'在'System.Windows.StaticResourceExtension'上提供值抛出异常"。
是否可以从 Excel 加载项调用 wpf 窗口?我做错了什么?
编辑:我已经看过了在 Office 解决方案中使用 WPF 控件,它不起作用。它为excel添加了一个单独的窗格,这不是我正在查看的内容。
你应该使用 Excel-DNA。它是一款非常有用的软件,专为这样的事情而设计,它有助于使用 WPF 实现 Excel,并且您应该不会再遇到任何问题。
你可以在这里得到它
但是,如果您不希望这样做,这里有一个关于如何操作的分步教程。
您可以尝试将 WPF 窗口定义为自定义控件,并将其添加到单词的自定义窗格中。请看以下链接:
在办公解决方案中使用 WPF 控件
您也可以查看此链接:
Office 2007 Excel 加载项 - WPF 组合框在展开时折叠
我们将 WPF 控件添加到自定义窗格的常见方法是:
-
创建 Excel 加载项项目
-
添加用户控件 (WPF) 名称 UserControl1 并添加对 System.xaml 的引用
-
对 WPF 控件进行编码并成功生成项目
-
从窗口窗体集合添加用户控件,将该控件命名为 UserControl2
将用户控件 1拖放到用户控件2,根据需要分配位置
以这种方式编写此加载项.cs:
UserControl1 myWPF; UserControl2 winformControl; Microsoft.Office.Tools.CustomTaskPane pane; System.Windows.Forms.Integration.ElementHost myHost; private void ThisAddIn_Startup(object sender, System.EventArgs e) { myWPF = new UserControl1(); winformControl = new UserControl2(); pane = CustomTaskPanes.Add(winformControl, "WPFControl"); pane.Visible = true; pane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight; }
我们可以使用按钮来控制窗格的可见属性。