2009-08-17 7 views
13

Y at-il un moyen d'héberger une fenêtre WPF dans une autre fenêtre WPF. J'ai quelques formes assez complexes en place. Mais maintenant, pour simplifier les choses, j'essaie de fusionner quelques-uns d'entre eux sous forme de tabulations dans un formulaire 'Dashboard'.Avoir une fenêtre wpf dans une autre fenêtre wpf

S'il vous plaît noter que je ne suis pas en train d'accueillir un formulaire Windows, mais une autre fenêtre WPF

Répondre

11

Si vous voulez des tabpages, pourquoi ne pas utiliser un TabControl avec UserControls à l'intérieur? Si vous avez besoin de transformer un de ces onglets en une fenêtre flottante, placez simplement UserControl dans une nouvelle fenêtre ...

+0

J'utilise déjà un TabControl. Mais au lieu d'héberger un UserControl, j'aimerais héberger une fenêtre déjà existante. Est-ce possible? –

+0

non ce n'est pas ... vous devez changer votre fenêtre à un UserControl –

3

Puis-je répondre à cette question par une autre question; Pourquoi ne pas les créer en tant que contrôles plutôt que d'autres fenêtres WPF, que vous souhaitez héberger dans la fenêtre principale de WPF?

+2

Je suppose que ce parce qu'il veut pour profiter du comportement de la fenêtre par défaut (barre de titre pour le déplacer, boutons de fermeture/min/max ...) –

+0

Pas vraiment Thomas. Je me fiche de l'une de ces choses. Est-il possible de convertir une fenêtre existante en un contrôle utilisateur? Ce que j'essaie vraiment de faire, c'est de gagner du temps et d'utiliser Windows déjà existant (et testé en production) dans une nouvelle fenêtre "Main". Chacune des fenêtres existantes deviendra simplement un onglet dans cette fenêtre "principale" au lieu d'être une fenêtre séparée. –

0

Je pense que ce que vous demandez est MDI, Multiple Document Interface. Quelque chose comme this pourrait aider. Notez cependant que le paradigme MDI est largement évité ces jours-ci. Il existe généralement de meilleurs moyens d'obtenir la même fonctionnalité.

+0

Cool ... mais le chrome pour les fenêtres enfants est assez moche;) –

+0

MDI est sooo 1995;) – Thorsten79

0

Je pense que vous voulez héberger le contenu de WPF Window1.xaml (page1.xaml) à l'intérieur d'une autre fenêtre WPF.

Eh bien ... vous pouvez utiliser la navigation. Au lieu d'exécuter le contenu de window1.xaml à l'intérieur de l'onglet, vous pouvez travailler avec vos données dans Navigation. La navigation peut s'exécuter dans l'application de fenêtre WPF. Vous venez de concevoir votre formulaire/interface utilisateur dans page1.xaml.

l'un de l'autre..MDI vieux et rouillé. Nous voulons effacer de la fenêtre supérieure de nos jours.

1

un peu en retard sur ce point, mais je suppose avec WindowsForms Interop vous pouvez mettre en WPF un hôte de contrôle WinForms et dans cet hôte mettre un contrôle WinForms qui héberge la poignée d'une fenêtre WPF

+0

> héberge le handle d'une fenêtre WPF Une élaboration? – Edza

+0

vous pouvez faire des contrôles WinForms à partir de ce que je me souviens que l'emballage d'une poignée de fenêtre. Donc, puisque vous pouvez obtenir le handle de fenêtre d'une fenêtre WPF, vous pouvez l'enrouler avec un contrôle WinForms je crois. Puis comme WPF peut héberger les contrôles WinForms via la couche d'interopérabilité qu'il a (vice-versa est également disponible à partir de ce dont je me souviens), vous pouvez mettre ce wrapper WinForms de cette fenêtre WPF dans une autre fenêtre WPF –

+0

btw, je les ferais hériter de UserControl au lieu de cela qui est plus polyvalent (par exemple pourrait avoir Windows qui hébergent ce UserControl et pourrait également avoir une autre mise en page avec une vue à onglets qui héberge à chaque onglet un de ces UserControls) –

Questions connexes