WPF TabControl Проблемы с памятью - PullRequest
3 голосов
/ 23 августа 2010

Если у меня есть следующий TabControl и все работает правильно, и когда я переключаюсь на второй tabitem, он просто показывает без проблем.

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

Но если у меня есть этот xaml, когда я нажимаю второй tabitemпамять выходит из-под контроля

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

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Ожидается больше xaml / кода в вопросе (еще один выстрел из ответа хип):

Известно ли вам, что TabControl в WPF будет динамически выгружать визуальное дерево внутри TabItems (и их содержимое) после того, как они будут скрыты из поля зрения , и визуальное дерево / данные в нем могут быть собраны сборщиком мусора? Размещая две DataGrids в двух отдельных TabControls согласно вашему второму фрагменту кода, вы отключаете эту функцию:

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

В приведенном выше коде вам, по сути, требуется, чтобы платформа .NET загружала оба в память одновременно

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

Пример, когда обе DataGrids размещаются в TabItems на том же TabControl (выше), когда вы переключаете вкладки, память, необходимая для скрытой DataGrid, может быть собрана сборщиком мусора.

0 голосов
/ 19 января 2012

Отправка ответа по запросу: -).

Вам нужно показать немного больше вашего XAML - нам нужно увидеть Panel, который вы используете вокруг TabControl s - стрельба с бедра, я бы сказал, что DataGrid2 s TabControl помещается внутри Grid Row с Height="Auto" или Height="*".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...