2014-11-21 36 views
1

我有一个CSharp(.NET)应用程序,它使用Excel中的功能区创建了一个加载项。我在丝带上有按钮。我希望能够点击按钮,并打开WPF窗口。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窗口?我究竟做错了什么?

编辑:我已经看过 Using WPF Controls in Office Solutions,它不起作用。它为excel增加了一个单独的窗格,这不是我所看到的。

+0

这里有一个链接,有一些分步说明来做你正在做的事情。https://social.msdn.microsoft.com/Forums/office/en-US/e77413dc-2c33-4723-9425-49c705c49df6/c-excel-ribbon-button-to-open-wpf-as-dialog-box?论坛= exceldev – MethodMan 2014-11-21 20:16:04

+0

我已经看到这个链接。我认为这是关于添加一个窗格到Excel,在其上粘贴wpf应用程序。我想要一个单独的对话框,没有连接到Excel应用程序。 – user2689782 2014-11-21 20:22:46

回答

4

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

你能得到它Here

然而,如果你不希望有在这里是如何做到这一点一步步的教程。

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

Using WPF Controls in Office Solutions

您可能必须在此链接一看还有:

Office 2007 Excel Addin - WPF ComboBox Collapses when Expanded

我们添加WPF控件custompane是常见的方法:

  1. 创建一个Excel中添加项目

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

  3. 代码的WPF控件和构建项目成功

  4. 添加从窗口Form集合,命名控制,命令用户控件

  5. 拖放到的UserControl1 UserControl2,指定的位置,只要你喜欢

  6. 守则ThisAddIn.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; 
    } 
    

我们可以用按钮控制面板的Visible属性。

美好的一天。

+0

感谢您发布此信息。你从哪里得到CustomTaskPanes?所以我没有办法创建一个不连接到Excel的单独对话框? – user2689782 2014-11-21 20:50:10

+0

您可以分两步创建基本的自定义任务窗格: 1.通过将Windows窗体控件添加到UserControl对象,为您的自定义任务窗格创建用户界面。 2.通过将用户控件传递给加载项中的CustomTaskPaneCollection对象来实例化自定义任务窗格。该集合返回一个新的CustomTaskPane对象,您可以使用该对象修改任务窗格的外观并响应用户事件。 – Needham 2014-11-21 21:06:28

+0

谢谢我会试试这个! – user2689782 2014-11-21 22:00:16