2010-08-23 5 views
3

Si j'ai le TabControl suivant et que tout fonctionne correctement et quand je passe au second tabitem, il montre juste sans aucun problème.WPF TabControl Problèmes de mémoire

<TabControl> 
    <TabItem> //datagrid </TabItem> 
    <TabItem> //datagrid2 </TabItem> 
<TabControl> 

Mais si j'ai XAML, lorsque je clique sur le deuxième TabItem la mémoire est hors de contrôle

<TabControl> 
    <TabItem> //datagrid </TabItem> 
<TabControl> 
<TabControl> 
    <TabItem> //datagrid2 </TabItem> 
<TabControl> 

Qu'est-ce que je manque?

+1

Il vous manque le XAML dans votre question, il semble .. Fixé pour vous – Arcturus

+1

Vous devez montrer un peu plus de votre XAML - nous avons besoin de voir le panneau que vous utilisez autour du TabControls - tir de la hanche, je ' d disons que TabControl de DataGrid2 est placé à l'intérieur d'une ligne de grille avec Height = "Auto" ou Height = "*" – Goblin

+0

Oui, vous avez raison de devrais-je définir une hauteur définie? – TCoder

Répondre

0

Affichage d'une réponse sur demande :-).

Vous devez montrer un peu plus de votre XAML - nous avons besoin de voir le Panel vous utilisez autour des TabControl s - tir de la hanche, je dirais que le TabControl de DataGrid2 est placé à l'intérieur d'un Grid avec Height="Auto" ou Height="*".

0

En attendant plus XAML/code dans la question (un autre rejeton de la réponse de la hanche):

Savez-vous que le TabControl dans WPF dynamically unload the visual tree within TabItems (and their contents) once they are tabbed out of view, et les visuels arbres/données peuvent être collectées des ordures qui y sont? En accueillant les deux DataGrid dans deux TabControls séparés selon votre deuxième extrait de code vous désactivez cette fonction:

<TabControl> 
    <TabItem> //datagrid </TabItem> 
<TabControl> 
<TabControl> 
    <TabItem> //datagrid2 </TabItem> 
<TabControl> 

Dans le code ci-dessus vous nécessitant essentiellement le framework .NET pour charger à la fois dans la mémoire simultanément

<TabControl> 
    <TabItem> //datagrid </TabItem> 
    <TabItem> //datagrid2 </TabItem> 
<TabControl> 

L'exemple où les deux DataGrids sont hébergés dans TabItems sur le même TabControl (ci-dessus) lorsque vous changez de tabulation, la mémoire requise pour le DataGrid masqué peut être récupérée.