2014-11-21 2 views
1

Excel에서 리본이있는 추가 기능을 만든 CSharp (.NET) 응용 프로그램이 있습니다. 리본에 단추가 있습니다. 단추를 클릭하고 WPF 창을 열 수 있기를 원합니다.WPF 창을 호출하는 Excel 단추

코드는 MyWindow 유형의 System.Windows.Window의 클래스

private void OnNewButtonAction(object sender, RibbonControlEventArgs e) 
{      
     var window = new View.MyWindow() 
     { 
     DataContext = new ViewModel.MyViewModel(), 
     }; 
     window.Show(); 
    } 

것 같습니다. MyWindow에는 라디오 버튼, 텍스트 필드 등이있는 xaml 파일이 있습니다.이 버튼을 클릭하면 XML 구문 분석 예외가 발생합니다. - ''System.Windows.StaticResourceExtension '값 제공 예외".

엑셀 추가 기능에서 wpf 창을 불러올 수 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 : 이미 Using WPF Controls in Office Solutions을 보았습니다. 작동하지 않습니다. 그리고 별도의 창을 추가하여 지금보고있는 것과 다릅니다.

+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? forum = exceldev – MethodMan

+0

이 링크를 보았습니다. 나는 Excel에 창을 추가하는 것이고, 그 위에는 wpf 응용 프로그램을 붙여 넣을 것이라고 생각합니다. Excel 응용 프로그램에 연결되지 않은 별도의 대화 상자가 필요합니다. – user2689782

답변

4

Excel-DNA를 사용해야합니다. 이 소프트웨어는 WPF로 Excel을 구현하는 데 도움이되며 실제로 다시는 문제가 발생하지 않아야합니다.

당신은 Here

당신이 그것을 수행하는 방법에 대한 단계 튜토리얼에 의해 단계가 있다고하지 않으 그러나 경우 얻을 수 있습니다.

사용자 지정 컨트롤로 WPF 창을 정의하고 단어의 사용자 지정 창에 추가하려고 할 수 있습니다. 다음 링크에서보세요 기쁘게 :

Using WPF Controls in Office Solutions

당신이이 링크를 살펴있을 수 있습니다

Office 2007 Excel Addin - WPF ComboBox Collapses when Expanded

custompane이에 우리가 WPF 컨트롤을 추가하는 일반적인 방법 :

  1. 엑셀 추가 기능 프로젝트를 만듭니다

  2. 성공적으로

  3. 이 UserControl2를 같은 컨트롤의 이름 창 양식 모음에서 사용자 컨트롤 추가 사용자 컨트롤 (WPF) 이름 UserControl1을 추가하고 System.xaml에

  4. 코드 WPF 컨트롤을 참조를 추가하고 프로젝트를 빌드

    012,351,641을 :

  5. 드래그 앤이 방법으로

  6. 코드에게 ThisAddIn.cs을 원하는대로 위치를 지정 UserControl2를에 UserControl1을 드롭

    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

+0

두 단계로 기본 사용자 지정 작업 창을 만들 수 있습니다. 1. Windows Forms 컨트롤을 UserControl 개체에 추가하여 사용자 지정 작업 창의 사용자 인터페이스를 만듭니다. 2. 추가 기능의 CustomTaskPaneCollection 개체에 사용자 정의 컨트롤을 전달하여 사용자 지정 작업 창을 인스턴스화합니다. 이 컬렉션은 작업 창의 모양을 수정하고 사용자 이벤트에 응답하는 데 사용할 수있는 새로운 CustomTaskPane 개체를 반환합니다. – Needham

+0

감사합니다! – user2689782