Edit

Share via


TabControl.SelectedContent Property

Definition

Gets the content of the currently selected TabItem.

public:
 property System::Object ^ SelectedContent { System::Object ^ get(); };
public object SelectedContent { get; }
member this.SelectedContent : obj
Public ReadOnly Property SelectedContent As Object

Property Value

The content of the currently selected TabItem. The default is null.

Examples

The following example uses the SelectedContent property to get the Person in the currently selected TabItem.

if (tabCtrl1.SelectedContent is Person)
{
    Person selectedPerson = tabCtrl1.SelectedContent as Person;
    StringBuilder personInfo = new StringBuilder();

    personInfo.Append(selectedPerson.FirstName);
    personInfo.Append(" ");
    personInfo.Append(selectedPerson.LastName);
    personInfo.Append(", ");
    personInfo.Append(selectedPerson.HomeTown);
    MessageBox.Show(personInfo.ToString());
}

If TypeOf tabCtrl1.SelectedContent Is Person Then

    Dim selectedPerson As Person = tabCtrl1.SelectedContent

    Dim personInfo As StringBuilder = New StringBuilder()

    personInfo.Append(selectedPerson.FirstName)
    personInfo.Append(" ")
    personInfo.Append(selectedPerson.LastName)
    personInfo.Append(", ")
    personInfo.Append(selectedPerson.HomeTown)
    MessageBox.Show(personInfo.ToString())
End If

The following example creates a ControlTemplate for the TabControl. Setting the ContentSource property to "SelectedContent" creates aliases to the SelectedContent, SelectedContentTemplate, and SelectedContentTemplateSelector properties.

<Style  TargetType="{x:Type TabControl}">
  <Setter Property="OverridesDefaultStyle"
          Value="True" />
  <Setter Property="SnapsToDevicePixels"
          Value="True" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type TabControl}">
        <Grid KeyboardNavigation.TabNavigation="Local">
          <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
          </Grid.RowDefinitions>
          <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
              <VisualState x:Name="Disabled">
                <Storyboard>
                  <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                                Storyboard.TargetProperty="(Border.BorderBrush).
                    (SolidColorBrush.Color)">
                    <EasingColorKeyFrame KeyTime="0"
                                         Value="#FFAAAAAA" />
                  </ColorAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
          </VisualStateManager.VisualStateGroups>
          <TabPanel x:Name="HeaderPanel"
                    Grid.Row="0"
                    Panel.ZIndex="1"
                    Margin="0,0,4,-1"
                    IsItemsHost="True"
                    KeyboardNavigation.TabIndex="1"
                    Background="Transparent" />
          <Border x:Name="Border"
                  Grid.Row="1"
                  BorderThickness="1"
                  CornerRadius="2"
                  KeyboardNavigation.TabNavigation="Local"
                  KeyboardNavigation.DirectionalNavigation="Contained"
                  KeyboardNavigation.TabIndex="2">
            <Border.Background>
              <LinearGradientBrush EndPoint="0.5,1"
                                   StartPoint="0.5,0">
                <GradientStop Color="{DynamicResource ContentAreaColorLight}"
                              Offset="0" />
                <GradientStop Color="{DynamicResource ContentAreaColorDark}"
                              Offset="1" />
              </LinearGradientBrush>
            </Border.Background>
            <Border.BorderBrush>
              <SolidColorBrush Color="{DynamicResource BorderMediumColor}"/>
            </Border.BorderBrush>
            <ContentPresenter x:Name="PART_SelectedContentHost"
                              Margin="4"
                              ContentSource="SelectedContent" />
          </Border>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

The following example binds the SelectedContent property to the ContentPresenter.Content property by using the TemplateBinding Markup Extension.

<ContentPresenter Content="{TemplateBinding SelectedContent}" 
     ContentTemplate="{TemplateBinding SelectedContentTemplate}" 
     ContentTemplateSelector="{TemplateBinding SelectedContentTemplateSelector}" />

Remarks

This property is updated to reference the Content of the active TabItem when the tab selection changes.

The ControlTemplate of the TabControl uses the ContentPresenter.ContentSource property to bind the ContentPresenter.Content property to this property. If you create a new ControlTemplate for the TabControl, be sure to the bind the ContentPresenter.Content property to this property by setting the ContentPresenter.ContentSource property to "SelectedContent" or by using TemplateBinding Markup Extension.

XAML Attribute Usage

<object property="{TemplateBinding SelectedContent}"/>

Dependency Property Information

Item Value
Identifier field SelectedContentProperty
Metadata properties set to true None

Applies to