2014-11-21 37 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