2010-11-28 30 views
0

J'ai déjà créé un paquet en utilisant une fenêtre Wpf, Sql data et ElementHost- Assez facile, pas d'interop, juste du code. Maintenant, j'ai besoin de développer et j'espère utiliser un projet de données Wpf comme mon ElementHost.Child. J'ai ajouté une référence de projet et utilisé cette ligne de code dans les ToolWindow.cs:VS 2008 Extensibility Package - Comment attacher un projet Wpf Data en utilisant ElementHost

elementHost.Child = WpfProject.Window1; 

Les pistes de packages et le ToolWindow commence par un cadre blanc WPF. Le débogage m'indique que j'ai les références de l'élément d'interface utilisateur et même les données dans le fichier ToolWindow.cs, mais il ne parvient pas à la page. Je sais qu'il me manque une sorte de syntaxe de liaison, mais la grande recherche sur le net n'a pas révélé la magie. Ai-je besoin de faire tourner le projet ou de faire quelques tours d'interopérabilité? Ce sera vraiment génial de faire ce travail car je serai capable de réutiliser un travail important si je reçois ceci pour voler. Cheers, Danny

est le code ici que je mets dans la classe ToolWindow:

 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

Pouvez-vous ajouter un peu plus de code, par exemple en montrant comment vous construisez l'élémentHost? –

+0

Merci Colin- Je l'ai ajouté comme un edit. – isitdanny

Répondre

0

Voici le réponse- WpfDataTest.Window1 était une fenêtre WPF classe dérivée. Je l'ai simplement changé en un UserControl de niveau supérieur dans mon projet WPFData et cela fonctionne. Comme une note supplémentaire, il doit être des contrôles de niveau supérieur tels que le contrôle des éléments, UserControl ou Grid pour fonctionner. Le mérite de cette réponse revient à Ryan Molden.