Wpf 如何从TabControl获取TabPanel实际宽度
我有一个选项卡控件,选项卡条放置在左侧。因此,它是一个简单的导航菜单类型选项卡控件。 TabControl的控件模板中有一个TabPanelWpf 如何从TabControl获取TabPanel实际宽度,wpf,tabcontrol,tabpanel,Wpf,Tabcontrol,Tabpanel,我有一个选项卡控件,选项卡条放置在左侧。因此,它是一个简单的导航菜单类型选项卡控件。 TabControl的控件模板中有一个TabPanel <ControlTemplate TargetType="{x:Type TabControl}"> <Grid x:Name="Grid" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid x:Name="Grid" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="ColumnDefinition0"/>
<ColumnDefinition x:Name="ColumnDefinition1" Width="0"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition x:Name="RowDefinition0" Height="Auto"/>
<RowDefinition x:Name="RowDefinition1" Height="*"/>
</Grid.RowDefinitions>
<Border x:Name="ContentPanel" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="0" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="1" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local" Padding="{TemplateBinding Padding}" Margin="0,-1,0,0">
<ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<ScrollViewer x:Name="scroll" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto" Template="{StaticResource ScrollViewerTab}">
<TabPanel x:Name="HeaderPanel" IsItemsHost="true" Margin="0,2,0,0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1" VerticalAlignment="Bottom" />
</ScrollViewer>
</Grid>
</ControlTemplate>
为了对齐,我需要TabPanel(选项卡标题)的实际宽度在tabcontrol之外
我试着跟着,但没用
<TextBlock Text="{Binding Path=Actualwidth, ElementName=HeaderPanel}" />
<TabControl />
<TabControl Tag="{Binding Path=ActualWidth, ElementName=HeaderPanel}" />
我还尝试将header面板的ActualWidth绑定到TabControl的Tag属性。即使这样也不行
<TextBlock Text="{Binding Path=Actualwidth, ElementName=HeaderPanel}" />
<TabControl />
<TabControl Tag="{Binding Path=ActualWidth, ElementName=HeaderPanel}" />
TabControls.Items集合提供ViewModel对象的列表。因此我无法获取TabItem实例。我最终在codebehind文件中使用了visual tree helper
var tabPanel = VisualTreeHelpers.FindChild<TabPanel>(TabControl, "MenuPanel");
var tabPanel=visualtreehelopers.FindChild(TabControl,“MenuPanel”);