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?
No comments:
Post a Comment
Send us your comment related to the topic mentioned on the blog