相关疑难解决方法(0)

WPF TreeView:如何使控件相对于每个 TreeViewItem 对齐,但仍然获得标题文本的缩进效果?

这是我想要实现的目标的直观想法:

树视图

我希望左侧和右侧的所有按钮都垂直对齐,无论 TreeViewItem 位于树中的哪个位置。我在实现这种效果时遇到了困难,同时也让标题以典型的嵌套方式缩进。

我最近的尝试涉及修改 TreeViewItem 模板;将按钮放在跨越主网格中所有列的 DockPanel 中(停靠在左侧或右侧),将扩展器和标题放在中间列中,并使 ItemsPresenter (ItemsHost) 跨越下一行上的所有列。这使得所有内容都对齐,包括标题内容。

这是我目前的 TreeViewItem 样式的简化版本:

<Style x:Key="ExpandCollapseToggleStyle" TargetType="{x:Type ToggleButton}">
    <Setter Property="Focusable" Value="False"/>
    <Setter Property="Width" Value="16"/>
    <Setter Property="Height" Value="16"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ToggleButton}">
                <Border Background="Transparent" Height="16" Padding="5,5,5,5" Width="16">
                    <Path x:Name="ExpandPath" Data="{StaticResource TreeArrow}" Fill="{StaticResource TreeViewItem.TreeArrow.Static.Fill}" Stroke="{StaticResource TreeViewItem.TreeArrow.Static.Stroke}">
                        <Path.RenderTransform>
                            <RotateTransform Angle="135" CenterY="3" CenterX="3"/>
                        </Path.RenderTransform>
                    </Path>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsChecked" Value="True">
                        <Setter Property="RenderTransform" TargetName="ExpandPath">
                            <Setter.Value>
                                <RotateTransform Angle="180" CenterY="3" CenterX="3"/>
                            </Setter.Value>
                        </Setter>
                        <Setter Property="Fill" TargetName="ExpandPath" Value="{StaticResource TreeViewItem.TreeArrow.Static.Checked.Fill}"/>
                        <Setter Property="Stroke" TargetName="ExpandPath" Value="{StaticResource …
Run Code Online (Sandbox Code Playgroud)

wpf treeview xaml itemtemplate

2
推荐指数
1
解决办法
1647
查看次数

标签 统计

itemtemplate ×1

treeview ×1

wpf ×1

xaml ×1