Почему элементы управления вкладками повторно используют экземпляры View при смене вкладки

У меня есть проект WPF после шаблона MVVM.

У меня есть один элемент управления, который содержит элемент управления вкладкой. Элемент управления вкладками привязывается к наблюдаемой коллекции. Каждый элемент в наблюдаемой коллекции представляет собой модель представления для определенной страницы вкладки, которая будет показана.

Файл xaml, реализующий элемент управления вкладкой, использует шаблон данных для выбора определенного пользовательского элемента управления для отображения в зависимости от конкретного типа модели представления в наблюдаемой коллекции.

Странное поведение, которое я наблюдаю, - это когда я переключаюсь между двумя вкладками другого типа, создается новый экземпляр пользовательского элемента управления. Когда я переключаюсь между двумя вкладками одного и того же типа, WPF повторно использует один и тот же экземпляр пользовательского элемента управления, он просто меняет DataContext на элемент управления.

Это имеет некоторые очень неудачные последствия, например. при изменении между двумя вкладками одного и того же типа, но с различным визуальным состоянием, отображается анимация перехода визуального состояния, где она не должна; изменение должно быть мгновенным. Также возможны некоторые исключения при изменении между двумя вкладками разного типа.

Могу ли я изменить это поведение, так что элемент управления вкладки будет удерживать один экземпляр пользовательского элемента управления для каждой закладки, а не "уничтожать" элементы управления при переключении на другую вкладку.

<UserControl.Resources>
    <DataTemplate DataType="{x:Type ViewModels:ConcreteViewModel1}" d:IsDataSource="true">
        <Views:ConcreteView1 />
    </DataTemplate>
    <DataTemplate DataType="{x:Type ViewModels:ConcreteViewModel2}" d:IsDataSource="true">
        <Views:ConcreteView2/>
    </DataTemplate>
    ...
</UserControl.Resources>

<Grid x:Name="ControlTabLayoutRoot">
    <TabControl Grid.Row="0" x:Name="Main_TabControl"
        ItemsSource="{Binding MainTabControl}"
        SelectedIndex="{Binding SelectedIndex}" 
        IsSynchronizedWithCurrentItem="True"
        HorizontalContentAlignment="Stretch" 
        VerticalContentAlignment="Stretch"
        ItemContainerStyle="{DynamicResource CustomTabItemStyle}"
        Style="{DynamicResource CustomTabControl}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock>                 
                <TextBlock.Text>
                  <MultiBinding Converter="{StaticResource tabItemHeaderConverter}">
                      <MultiBinding.Bindings>
                          <Binding/>
                          <Binding Path="ProtocolName"/>
                      </MultiBinding.Bindings>
                  </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </TabControl.ItemTemplate>
    </TabControl>
</Grid>