gpt4 book ai didi

c# - 如何获取 TabControl WPF 的 TabItem 的标题宽度

转载 作者:行者123 更新时间:2023-11-30 20:40:47 25 4
gpt4 key购买 nike

我需要做的是在超出范围并隐藏 TabControl 之前停止 GridSplitter。因此,我想到的想法是将 TabItems 的所有 header 的 ActualWidths 的总和绑定(bind)到 TabControl 的 MinWidth 或保留 TabControl 的 Crid Cell。但问题是到目前为止我无法访问 TabItem 的标题宽度。我发现的一种解决方案是在 Tabitem.Header 中放置一个 TextBlock,声明其宽度并使用 x:Name 命名。但是以这种方式使用宽度并不能给出标题的总宽度,包括边距和填充等,因此它甚至无法接近准确度。

更新

好的,这是代码。请注意,我已经实现了其中一种解决方案,但如果动态加载选项卡,它不会控制 MinWidth。

<Grid Background="#FFD6DBE9" Height="614" Width="1109">
<Grid.RowDefinitions>
<RowDefinition Height="89"/>
<RowDefinition Height="Auto" MinHeight="{Binding ActualHeight, ElementName=gridNotificationsHeader}"/>
<RowDefinition Height="494*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="400*" MinWidth="{Binding MinWidth, ElementName=tabDataEntities}"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="144*">
<ColumnDefinition.MinWidth>
<MultiBinding Converter="{StaticResource StringSumtoIntConvert}">
<Binding ElementName="cdLblNotificationsHeader" Path="MinWidth"/>
<Binding ElementName="cdBtnNotificationsClose" Path="ActualWidth"/>
</MultiBinding>
</ColumnDefinition.MinWidth>
</ColumnDefinition>

</Grid.ColumnDefinitions>
<GridSplitter x:Name="gridSplitter" Grid.Column="1" HorizontalAlignment="Center" Grid.Row="1" Width="2" Grid.RowSpan="2"/>
<Grid x:Name="gridNotificationsHeader" Grid.Column="2" Background="#FF657695"
Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="cdLblNotificationsHeader" MinWidth="{Binding Width, ElementName=lblNotificationsHeader}"/>
<ColumnDefinition x:Name="cdBtnNotificationsClose" Width="Auto"/>
</Grid.ColumnDefinitions>
<Label x:Name="lblNotificationsHeader" Content="Notifications" VerticalAlignment="Top"
FontSize="14.667" Height="30" Foreground="#FFEBF0EE" HorizontalAlignment="Left" Width="92"/>
<Button x:Name="btnNotificationsClose" Content="X"
Margin="0,5,8,0" VerticalAlignment="Top" Width="20" FontFamily="Verdana" HorizontalAlignment="Right" Background="Transparent" FontSize="13.333" Foreground="Black" Grid.Column="1"/>
</Grid>
<TabControl x:Name="tabDataEntities" Margin="0,0,5,10" Grid.Row="1" Grid.RowSpan="2" FontSize="12" Grid.ColumnSpan="1" MinWidth="{Binding ElementName=TabItemOne, Path=ActualWidth}">
<TabItem x:Name="TabItemOne">
<TabItem.Header>Tab Item</TabItem.Header>
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5"/>
</TabItem>
</TabControl>
</Grid>

最佳答案

就这么简单

<StackPanel>
<TabControl>
<TabItem Header="Hello world" Name="Tab1"/>
<TabItem Header="Hello" Name="Tab2"/>
<TabItem Header="world" Name="Tab3"/>
</TabControl>
<TextBlock Text="{Binding ElementName=Tab1, Path=ActualWidth}"/>
<TextBlock Text="{Binding ElementName=Tab2, Path=ActualWidth}"/>
<TextBlock Text="{Binding ElementName=Tab3, Path=ActualWidth}"/>
</StackPanel>

关于c# - 如何获取 TabControl WPF 的 TabItem 的标题宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32926699/

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