13

I am binding a ObservableCollection of data objects to my tab control item source. I have correctly figured out how to bind the controls within the tabitem that is generated, however I cannot figure out how to change the header property of the tabitem that is generated using the a property within the Observable Collection. Sorry if I am wording this incorrectly. Here is my XAML for the tabitem data template:

<DataTemplate x:Key="TabItemTemplate">
        <TreeView Height="461" VerticalAlignment="Top" 
            Width="625" ItemTemplateSelector="{StaticResource TreeviewDataSelector}" ItemsSource="{Binding}" />
</DataTemplate>

2 Answers 2

28

Create a Style for your TabItems that sets the Header property, and apply the style to TabControl.ItemContainerStyle

<TabControl>
    <TabControl.ItemContainerStyle>
        <Style TargetType="TabItem">
            <Setter Property="Header" Value="{Binding PathToYourProperty}"/>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>
Sign up to request clarification or add additional context in comments.

Comments

15

Set the DisplayMemberPath on the TabControl to the name of the property.

<TabControl ItemsSource="{Binding items}" DisplayMemberPath="headerPropertyName">

1 Comment

I had to use this with Caliburn and convention binding: <TabControl x:Name="SectionViewModels" DisplayMemberPath="HeaderText" />

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.