gpt4 book ai didi

wpf - 如何将WPF选项卡项标题扩展到父控件宽度

转载 作者:行者123 更新时间:2023-12-03 09:00:31 25 4
gpt4 key购买 nike

XAML中是否有一种方法可以使选项卡项目 header 延伸到选项卡控件的整个宽度上?

例如,我有三个标签:红色,蓝色和绿色。如果我有一个其宽度设置为auto的选项卡控件,则选项卡标题将仅填充选项卡内容上方的部分空间,但我希望它们填充所有空间。对于我的三个选项卡示例,红色应占据控件的前三分之一,蓝色应占据控件的中心三分之一,绿色应占据控件的最后三分之一。

我有一个想法,该如何在现在正在编写的代码中执行此操作,但是我有兴趣以最简单的方式执行此操作。

最佳答案

我以乔丹的榜样为例,并对它进行了一些更改。此版本适用于任意数量的标签:

namespace WpfApplication1.Converters
{
public class TabSizeConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
TabControl tabControl = values[0] as TabControl;
double width = tabControl.ActualWidth / tabControl.Items.Count;
//Subtract 1, otherwise we could overflow to two rows.
return (width <= 1) ? 0 : (width - 1);
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

xaml中的 namespace 相同:
xmlns:local="clr-namespace:WpfApplication1.Converters"

这将使所有选项卡都使用它:
<Window.Resources>
<local:TabSizeConverter x:Key="tabSizeConverter" />
<Style TargetType="{x:Type TabItem}">
<Setter Property="Width">
<Setter.Value>
<MultiBinding Converter="{StaticResource tabSizeConverter}">
<Binding RelativeSource="{RelativeSource Mode=FindAncestor,
AncestorType={x:Type TabControl}}" />
<Binding RelativeSource="{RelativeSource Mode=FindAncestor,
AncestorType={x:Type TabControl}}" Path="ActualWidth" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>

关于wpf - 如何将WPF选项卡项标题扩展到父控件宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com