Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I took a look at your example. Thanks for posting code. Now I understand your issue completely. Before I suggested to change DynamicResource to StaticResource I thought you wanted to only look up once for your DataTemplate.</p> <p>Now I see you wish to keep the instance of DataTemplate alive so TabControl doesn't destroy it when changing tabs.</p> <p>Here is the solution:</p> <pre><code>&lt;Window.DataContext&gt; &lt;local:MainWindowViewModel /&gt; &lt;/Window.DataContext&gt; &lt;Window.Resources&gt; &lt;local:TabContentTemplateSelector x:Key="tabContentTemplateSelector" /&gt; &lt;DataTemplate x:Key="TabitemDataTemplate"&gt; &lt;StackPanel Width="50" Height="50"&gt; &lt;TextBlock Text="{Binding TabFirstPanel.Name}"&gt;&lt;/TextBlock&gt; &lt;/StackPanel&gt; &lt;/DataTemplate&gt; &lt;Grid x:Key="template1"&gt; &lt;Grid.RowDefinitions&gt; &lt;RowDefinition&gt;&lt;/RowDefinition&gt; &lt;RowDefinition&gt;&lt;/RowDefinition&gt; &lt;/Grid.RowDefinitions&gt; &lt;Grid.ColumnDefinitions&gt; &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt; &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt; &lt;/Grid.ColumnDefinitions&gt; &lt;TextBlock Grid.Row="0" Grid.Column="0"&gt;Name :&lt;/TextBlock&gt; &lt;TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding TabFirstPanel.Name}"&gt;&lt;/TextBlock&gt; &lt;/Grid&gt; &lt;Grid x:Key="template2"&gt; &lt;Grid.RowDefinitions&gt; &lt;RowDefinition&gt;&lt;/RowDefinition&gt; &lt;/Grid.RowDefinitions&gt; &lt;Grid.ColumnDefinitions&gt; &lt;ColumnDefinition Width="200"&gt;&lt;/ColumnDefinition&gt; &lt;ColumnDefinition Width="5"&gt;&lt;/ColumnDefinition&gt; &lt;ColumnDefinition Width="Auto"&gt;&lt;/ColumnDefinition&gt; &lt;/Grid.ColumnDefinitions&gt; &lt;Grid Grid.Row="0" Grid.Column="0"&gt; &lt;Grid.RowDefinitions&gt; &lt;RowDefinition&gt;&lt;/RowDefinition&gt; &lt;RowDefinition&gt;&lt;/RowDefinition&gt; &lt;/Grid.RowDefinitions&gt; &lt;Grid.ColumnDefinitions&gt; &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt; &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt; &lt;/Grid.ColumnDefinitions&gt; &lt;TextBlock Grid.Row="0" Grid.Column="0"&gt;Name :&lt;/TextBlock&gt; &lt;TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding TabFirstPanel.Name}"&gt;&lt;/TextBlock&gt; &lt;/Grid&gt; &lt;GridSplitter Grid.Row="0" Grid.Column="1" VerticalAlignment="Stretch" Width="5" Height="Auto" ResizeDirection="Columns" ResizeBehavior="PreviousAndNext"/&gt; &lt;Grid Grid.Row="0" Grid.Column="2"&gt; &lt;Grid.RowDefinitions&gt; &lt;RowDefinition&gt;&lt;/RowDefinition&gt; &lt;RowDefinition&gt;&lt;/RowDefinition&gt; &lt;/Grid.RowDefinitions&gt; &lt;Grid.ColumnDefinitions&gt; &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt; &lt;ColumnDefinition&gt;&lt;/ColumnDefinition&gt; &lt;/Grid.ColumnDefinitions&gt; &lt;TextBlock Grid.Row="0" Grid.Column="0"&gt;Additional Detail :&lt;/TextBlock&gt; &lt;TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding TabSecondPanel.AdditionalDetails}"&gt;&lt;/TextBlock&gt; &lt;/Grid&gt; &lt;/Grid&gt; &lt;DataTemplate x:Key="TabContentWithFirstPanel"&gt; &lt;ContentPresenter Content="{StaticResource template1}"/&gt; &lt;/DataTemplate&gt; &lt;DataTemplate x:Key="TabContentWithBothPanel"&gt; &lt;ContentPresenter Content="{StaticResource template2}"/&gt; &lt;/DataTemplate&gt; </code></pre> <p>If you just copy past that you will do fine.</p> <p>By the way, just as sidenote for you, destroying and building up DataTemplates is very important in wpf for releasing unmanaged memory.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload