Wpf 更改TreeView扩展器的垂直对齐切换按钮

Wpf 更改TreeView扩展器的垂直对齐切换按钮,wpf,treeview,styles,expander,hierarchicaldatatemplate,Wpf,Treeview,Styles,Expander,Hierarchicaldatatemplate,我的TreeView正在使用HierarchycalDataTemplate显示数据。TeeVIEWiTM跨越多条线,并显示扩展器TutgLePutt在中间垂直对齐。 如何强制扩展器切换按钮与顶部垂直对齐 XAML代码: <Window x:Class="TreeView.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.

我的TreeView正在使用HierarchycalDataTemplate显示数据。TeeVIEWiTM跨越多条线,并显示扩展器TutgLePutt在中间垂直对齐。

如何强制扩展器切换按钮与顶部垂直对齐

XAML代码:

<Window x:Class="TreeView.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<TreeView ItemsSource="{Binding Tables[Data]}">
    <TreeView.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <Setter Property="TreeViewItem.IsExpanded" Value="True"/>
            <Style.Resources>
                <Style TargetType="{x:Type Path}">
                    <Setter Property="VerticalAlignment" Value="Top"/>
                </Style>
            </Style.Resources>
        </Style>
    </TreeView.ItemContainerStyle>
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Structure}">
            <HierarchicalDataTemplate.ItemContainerStyle>
                <Style TargetType="TreeViewItem">
                    <Style.Resources>
                        <Style TargetType="{x:Type Path}">
                            <Setter Property="VerticalAlignment" Value="Top"/>
                        </Style>
                    </Style.Resources>
                </Style>
            </HierarchicalDataTemplate.ItemContainerStyle>
            <TextBlock Text="{Binding Text}" />
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>    

将其放入HierarchycalDataTemplates中,应将切换按钮内的图示符移到顶部,但仍会为您提供一个较大的可单击区域

这将设置第一级扩展器的样式

<TreeView.ItemContainerStyle>
    <Style TargetType="TreeViewItem">
        <Setter Property="TreeViewItem.IsExpanded" Value="True"/>
        <Style.Resources>
            <Style TargetType="{x:Type Path}">
                <Setter Property="VerticalAlignment" Value="Top"/>
            </Style>
        </Style.Resources>
    </Style>
</TreeView.ItemContainerStyle>

这将为任何后续级别设置样式

        <HierarchicalDataTemplate.ItemContainerStyle>
            <Style TargetType="TreeViewItem">
                <Style.Resources>
                    <Style TargetType="{x:Type Path}">
                        <Setter Property="VerticalAlignment" Value="Top"/>
                    </Style>
                </Style.Resources>
            </Style>
        </HierarchicalDataTemplate.ItemContainerStyle>


编辑树视图项的模板。不确定,但您正在使用树视图项标题的模板?然后您需要计算识别号,请提供示例代码;在使用HierarchycalDataTemplate时,我似乎无法覆盖该样式。我尝试过,但不起作用。我现在已经提供了问题中的源代码。我已经为第一级扩展器添加了额外的代码,如果您添加这些代码来代替当前的TreeView.ItemContainerStyle,那么它应该也可以工作。我已经尝试过了,但它不起作用;第一层和嵌套层仍然在垂直对齐的中间显示图示符。
        <HierarchicalDataTemplate.ItemContainerStyle>
            <Style TargetType="TreeViewItem">
                <Style.Resources>
                    <Style TargetType="{x:Type Path}">
                        <Setter Property="VerticalAlignment" Value="Top"/>
                    </Style>
                </Style.Resources>
            </Style>
        </HierarchicalDataTemplate.ItemContainerStyle>