TabControl has inactive tab controls

I am using the MVVM pattern for my application. MainWindow contains the TabControlc DataContextdisplayed in the ViewModel:

<Window.Resources>
  <ResourceDictionary>
    <DataTemplate x:Key="templateMainTabControl">
      <ContentPresenter Content="{Binding Path=DisplayName}" />
    </DataTemplate>

    <local:ViewModel x:Key="VM" />
    <local:WorkspaceSelector x:Key="WorkspaceSelector" />
    <local:TabOneView x:Key="TabOneView" />
    <local:TabTableView x:Key="TabTableView" />

    <DataTemplate x:Key="TabOne">
      <local:TabOneView />
    </DataTemplate>

    <DataTemplate x:Key="TabTable">
      <local:TabTableView />
    </DataTemplate>

  </ResourceDictionary>
</Window.Resources>


<TabControl Grid.Row="0"
            DataContext="{StaticResource VM}"
            ItemsSource="{Binding Workspaces}"
            SelectedItem="{Binding SelectedWorkspace}"
            ItemTemplate="{StaticResource templateMainTabControl}"
            ContentTemplateSelector="{StaticResource WorkspaceSelector}" />

WorkspaceSelector looks like that:

public class WorkspaceSelector : DataTemplateSelector
{
  public override DataTemplate SelectTemplate( object item, DependencyObject container )
  {
    Window win = Application.Current.MainWindow;
    Workspace w = ( Workspace ) item;
    string key = w.DisplayName.Replace( " ", "" );
    if ( key != "TabOne" )
    {
      key = "TabTable";
    }
    return win.FindResource( key ) as DataTemplate;
  }
}

so TabOnereturns DataTemplate. TabOne, and the other two tabs return DataTemplate TabTable.

If I run the application and double click on each of the tabs (1, 2, 3, 1, 2, 3), I don’t get what I expect


TabOne view created. TabTwo
displayed.
TabOne View created. TabTwo view created
.

, TemplateSelector , , TemplateSelector , .

, ! , TabControl , - , TabTwo TabThree. . TabControl , ?

+3
1

TabControl .

, , TabControl , , . , Unload , , , .

, 2 , :

  • , .
  • , , , ViewModel.

# 1, . , , . , , : https://github.com/cefsharp/CefSharp/blob/master/CefSharp.Wpf.Example/Controls/NonReloadingTabControl.cs

, "" , , , .

# 2 :

+4

Source: https://habr.com/ru/post/1732202/


All Articles