2010-11-28 18 views
0

Ich habe bereits ein Paket mit einem Wpf-Fenster, SQL-Daten und ElementHost-Ziemlich einfach, keine Interop, nur Code erstellt. Jetzt muss ich ein Wpf-Datenprojekt erweitern und hoffentlich als ElementHost.Child verwenden. Ich habe eine Projektnummer und verwenden diese Codezeile in dem ToolWindow.cs:VS 2008 Extensibility Package- Wie Wpf Data Projekt anhängen mit ElementHost

elementHost.Child = WpfProject.Window1; 

das Paket ausgeführt wird, und die Toolwindow öffnet mit einem leeren Wpf Frame. Das Debuggen sagt mir, dass ich die Referenzen der Benutzeroberflächenelemente und sogar die Daten auf die ToolWindow.cs erhalten habe, aber es geht nicht auf die Seite. Ich weiß, dass mir eine verbindliche Syntax fehlt, aber die große Suche im Netz hat die Magie nicht offenbart. Muss ich das Projekt ausführen oder einige Interop-Tricks machen? Es wird wirklich großartig sein, das zu schaffen, da ich in der Lage sein werde, größere Arbeiten wiederzuverwenden, wenn ich das zum Fliegen bekomme. Cheers, Danny

hier ist der Code, den ich in die Klasse Toolwindow setzen:

 private ElementHost elementHost; 
    protected override void Initialize() 
    {   
     base.Initialize(); 
     elementHost = new ElementHost(); 
     WpfDataTest.Window1 cv = new Window1(); 
     cv.Content = cv; 
     elementHost.Child = cv; 
    } 
    override public IWin32Window Window 
    { 
     get 
     { 
      return (IWin32Window)elementHost; 
     } 
    } 
+0

Können Sie ein wenig mehr Code hinzufügen, zum Beispiel zeigen, wie Sie das Element Host erstellen? –

+0

Danke Colin- Ich habe es als Bearbeitung hinzugefügt. – isitdanny

Antwort

0

Hier ist die Antwort- WpfDataTest.Window1 ein WPF-Fenster abgeleiteten Klasse war. Ich habe es einfach zu einem UserControl der obersten Ebene in meinem WPFData-Projekt geändert und es funktioniert. Als zusätzliche Anmerkung müssen die Steuerelemente der obersten Ebene, wie z. B. Elementsteuerung, Benutzersteuerelement oder Grid, funktionieren. Kredit für diese Antwort geht an Ryan Molden.