Вы можете наложить TabControl на свое изображение и скрыть его, если в нем нет элементов, например,
<Grid>
<Image />
<TabControl>
<TabControl.Style>
<Style TargetType="TabControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Items.Count, RelativeSource={RelativeSource Self}}"
Value="0">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabControl.Style>
</TabControl>
</Grid>
Или вы можете поменять содержимое ContentControl, также используя триггеры, так как в приведенном выше методе оба элемента управления влияют на макет. например,
<ContentControl>
<ContentControl.Resources>
<Image x:Key="Image"/>
<TabControl x:Key="TabControl" ItemsSource="{Binding Data}" />
</ContentControl.Resources>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Content" Value="{StaticResource TabControl}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Data.Count}"
Value="0">
<Setter Property="Content" Value="{StaticResource Image}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
Обратите внимание, что здесь DataTrigger
должен связываться непосредственно с той же коллекцией, которая использовалась в TabControl
. Это связано с тем, что при привязке к TabControl.Items.Count
эта привязка прекратится в тот момент, когда сработает триггер, поскольку TabControl
будет выгружен.