0
我有一個帶有n個選項卡的TabControl。 我想限制TabControl的寬度,這樣如果我只剩下一個Tab,那麼當我調整包含Tabcontrol的主窗口的大小時,它的標題總是可見的。 有什麼建議嗎?tabcontrol width wpf
我有一個帶有n個選項卡的TabControl。 我想限制TabControl的寬度,這樣如果我只剩下一個Tab,那麼當我調整包含Tabcontrol的主窗口的大小時,它的標題總是可見的。 有什麼建議嗎?tabcontrol width wpf
我通常會隱藏標籤時,只有一個項目是左:
<TabControl ItemsSource="{Binding Data}">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TabControl}, Path=Items.Count}"
Value="1">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
如果你想顯示的東西,而不是你可以疊加它上面並顯示它只有當計數下降到1
編輯:我可能應該提到你的問題確實沒有太大意義,你應該試着更清楚地表達自己。一種猜測,你可能意味着你想要最後剩下的選項卡拉伸整個可用寬度。這並不那麼簡單,因爲標題在TabPanel中,不能簡單地拉伸。
一個近似是綁定到TabControl的寬度:
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TabControl}, Path=Items.Count}"
Value="1">
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource AncestorType=TabControl}, Path=ActualWidth}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TabControl.ItemContainerStyle>
但是,這是一個有點過大,則可能需要使用ValueConverter減去一個很小的值。
EDIT2:像這樣:
<Style TargetType="{x:Type TabItem}">
<Style.Resources>
<local:AddConverter x:Key="AddConverter"/>
</Style.Resources>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TabControl}, Path=Items.Count}"
Value="1">
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource AncestorType=TabControl},
Path=ActualWidth,
Converter={StaticResource AddConverter},
ConverterParameter=-5}"/>
</DataTrigger>
</Style.Triggers>
</Style>
public class AddConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double input = (double)value;
double input2 = double.Parse(parameter as string);
return input + input2;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double input = (double)value;
double input2 = double.Parse(parameter as string);
return input - input2;
}
}
我不明白的問題/問題。調整窗口大小時,tabcontrol的tabitem標題消失了嗎? – Jose 2011-04-21 12:59:49
建議將顯示導致此行爲的一些代碼。 – 2011-04-21 13:04:17