可能为时已晚:)但是那些寻找答案的人可以尝试这个:
<TabItem>
<TabItem.Style>
<Style TargetType="TabItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Content">
<Setter.Value>
<!-- Your tab item content -->
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Content" Value="{Binding Content, RelativeSource={RelativeSource Self}}"/>
</Trigger>
</Style.Triggers>
</Style>
</TabItem.Style>
</TabItem>
您还可以使用 AttachedProperty 创建可重用的 TabItem 样式,其中将包含“延迟”内容。如果需要,请告诉我,我将编辑答案。
附属财产:
public class Deferred
{
public static readonly DependencyProperty ContentProperty =
DependencyProperty.RegisterAttached(
"Content",
typeof(object),
typeof(Deferred),
new PropertyMetadata());
public static object GetContent(DependencyObject obj)
{
return obj.GetValue(ContentProperty);
}
public static void SetContent(DependencyObject obj, object value)
{
obj.SetValue(ContentProperty, value);
}
}
选项卡项样式:
<Style TargetType="TabItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Content" Value="{Binding Path=(namespace:Deferred.Content), RelativeSource={RelativeSource Self}}"/>
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Content" Value="{Binding Content, RelativeSource={RelativeSource Self}}"/>
</Trigger>
</Style.Triggers>
</Style>
Example:
<TabControl>
<TabItem Header="TabItem1">
<namespace:Deferred.Content>
<TextBlock>
DeferredContent1
</TextBlock>
</namespace:Deferred.Content>
</TabItem>
<TabItem Header="TabItem2">
<namespace:Deferred.Content>
<TextBlock>
DeferredContent2
</TextBlock>
</namespace:Deferred.Content>
</TabItem>
</TabControl>