This may or may not be a bug but I'll give you guys the benefit of the doubt :P
The above does not select the tab within the ContextualTabGroup. It enters the IsVisibleChanged and does the assignment statement. But it doesn't actually commit the value to the property. IsActive is clearly set to true on the group. If you instead just set IsActive to true on the group in the xaml and run, it is selected when the program starts.
<ribbon:Ribbon Name="_ribbon" x:FieldModifier="private">
<ribbon:Tab Label="Home">
<ribbon:Group Label="Misc.">
<ribbon:Button Label="Activate Contextual Tab Group" Click="OnButtonClick"/>
</ribbon:Group>
</ribbon:Tab>
<ribbon:Ribbon.ContextualTabGroups>
<ribbon:ContextualTabGroup Name="_contextualTabGroup" x:FieldModifier="private" IsVisibleChanged="OnContextualTabGroupIsVisibleChanged">
<ribbon:Tab>
<ribbon:Group>
<ribbon:Button/>
</ribbon:Group>
</ribbon:Tab>
</ribbon:ContextualTabGroup>
</ribbon:Ribbon.ContextualTabGroups>
</ribbon:Ribbon>
private void OnContextualTabGroupIsVisibleChanged(object sender, System.Windows.DependencyPropertyChangedEventArgs e)
{
_ribbon.SelectedTab = (sender as ContextualTabGroup).Items[0] as Tab;
}
private void OnButtonClick(object sender, ExecuteRoutedEventArgs e)
{
_contextualTabGroup.IsActive = true;
}