用于调用 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添加了一个单独的窗格,这不是我正在查看的内容。

用于调用 WPF 窗口的 Excel 按钮

你应该使用 Excel-DNA。它是一款非常有用的软件,专为这样的事情而设计,它有助于使用 WPF 实现 Excel,并且您应该不会再遇到任何问题。

你可以在这里得到它

但是,如果您不希望这样做,这里有一个关于如何操作的分步教程。

您可以尝试将 WPF 窗口定义为自定义控件,并将其添加到单词的自定义窗格中。请看以下链接:

在办公解决方案中使用 WPF 控件

您也可以查看此链接:

Office 2007 Excel 加载项 - WPF 组合框在展开时折叠

我们将 WPF 控件添加到自定义窗格的常见方法是:

  1. 创建 Excel 加载项项目

  2. 添加用户控件 (WPF) 名称 UserControl1 并添加对 System.xaml 的引用

  3. 对 WPF 控件进行编码并成功生成项目

  4. 从窗口窗体集合添加用户控件,将该控件命名为 UserControl2

  5. 将用户控件
  6. 1拖放到用户控件2,根据需要分配位置

  7. 以这种方式编写此加载项.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; 
     }
    

我们可以使用按钮来控制窗格的可见属性。