Ожидается больше 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, может быть собрана сборщиком мусора.