Monday, September 10, 2012

TabControl unobvious behavior

TabControl unobvious behavior

I've added some tabs with the templates into the tabcontrol:

<sdk:TabControl x:Name="TabControl">     <sdk:TabItem Header="Header1" Content="{Binding Path=Content}">         <sdk:TabItem.ContentTemplate>             <DataTemplate>                 <TextBlock Text="Header1" Loaded="TextBlock_Loaded" />             </DataTemplate>         </sdk:TabItem.ContentTemplate>     </sdk:TabItem>     <sdk:TabItem Header="Header2" Content="{Binding Path=Content}">         <sdk:TabItem.ContentTemplate>             <DataTemplate>                 <TextBlock Text="Header2" Loaded="TextBlock_Loaded" />             </DataTemplate>         </sdk:TabItem.ContentTemplate>     </sdk:TabItem>     <sdk:TabItem Header="Header3" Content="{Binding Path=Content}">         <sdk:TabItem.ContentTemplate>             <DataTemplate>                 <TextBlock Text="Header3" Loaded="TextBlock_Loaded" />             </DataTemplate>         </sdk:TabItem.ContentTemplate>     </sdk:TabItem> </sdk:TabControl> 

If I switch between tabs I see only "Header1" in all tabs and Loaded event fires only once. I expected to see Header1, Header2 and Header3 in the appropriate tabs and to handle 3 loaded events.

I've decompiled the code of the TabControl and there i've found such method:

private void UpdateSelectedContent(object content) {     TabItem selectedItem = this.SelectedItem as TabItem;     if (selectedItem != null)     {         ContentPresenter contentHost = this.GetContentHost(this.TabStripPlacement);         if (contentHost != null)         {             contentHost.HorizontalAlignment = selectedItem.HorizontalContentAlignment;             contentHost.VerticalAlignment = selectedItem.VerticalContentAlignment;             contentHost.ContentTemplate = selectedItem.ContentTemplate;             contentHost.Content = content;         }     } } 

Seems like if i change the tab contenttemplate switches with it. But the behavior is different.

What is happening here? Why my expectations are wrong?

Answers & Comments...




No comments:

Post a Comment

Send us your comment related to the topic mentioned on the blog