我有一个TabControl,如果需要,它支持删除项目。为了使其看起来自然,我制作了TabItem
底部厚度为0
,Content
顶部厚度为0
。我也有
<Border Background="{StaticResource someLinearBrush with a 0.99 offset}"
<!-- This is the area in which TabItems (the strips) will be drawn. -->
<TabPanel IsItemsHost="True"/>
</Border>
模仿右侧的一条线。[黄线]
我还设置了一个Icommand来执行List A.Remove(tab)
之类的操作来删除viewModel中的选项卡。我的问题当我删除里面的每个项目时,丑陋的边框背景仍然存在。[黄线]。我想我需要做一些像
private void OnCloseTab(object obj)
{
TabData tab = obj as TabData;
if (TabItems.Count() == 1)
{
//do sth to change the border background to transparent
}
Console.WriteLine("has been here ?");
if (tab != null && TabItems.Contains(tab))
{
TabItems.Remove(tab);
}
}
我不确定如何在styles.xaml中定义Border
所有内容。
答案 0 :(得分:1)
在TabControl
模板中,您可以添加触发器:
<Trigger Property="HasItems" Value="False">
<Setter TargetName="YourBorder" Property="Background" Value="{x:Null}" />
</Trigger>
YourBorder
是您x:Name
提供的Border
。请注意,由于您引用了特定的模板元素,因此必须将此触发器放在ControlTemplate.Triggers
中,而不是Style.Triggers
。