代码之家  ›  专栏  ›  技术社区  ›  Martin Liversage

更改TreeView项目面板方向没有效果

  •  1
  • Martin Liversage  · 技术社区  · 15 年前

    默认值 ItemsPanel 属于 TreeView 是一个 StackPanel 具有默认方向的 Vertical . 我改变了方向 堆栈面板 Horizontal :

    <controls:TreeView>
      <controls:TreeView.ItemsPanel>
        <ItemsPanelTemplate>
          <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
      </controls:TreeView.ItemsPanel>
      <controls:TreeViewItem Header="Root" IsExpanded="True">
        <controls:TreeViewItem Header="Alfa"/>
        <controls:TreeViewItem Header="Beta"/>
        <controls:TreeViewItem Header="Gamma"/>
      </controls:TreeViewItem>
    </controls:TreeView>
    

    我希望树中的从属项水平堆叠,而不是垂直堆叠,但是当我从中交换方向时,我看不到任何可见的更改 竖的 然后再回来。为什么不呢 Orientation 堆栈面板 影响中项目的布局 ItemsPresenter ?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Martin Liversage    15 年前

    杰夫·威尔科克斯的评论让我思考,我发现自己做错了什么。我当时正在修改文件 ItemsPanel TreeView ,但为了实现我想要的,我必须修改 TreeViewItem :

    <controls:TreeView>
      <controls:TreeView.ItemContainerStyle>
        <Style TargetType="controls:TreeViewItem">
          <Setter Property="ItemsPanel">
            <Setter.Value>
              <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"/>
              </ItemsPanelTemplate>
            </Setter.Value>
          </Setter>
        </Style>
      </controls:TreeView.ItemContainerStyle>
      <controls:TreeViewItem Header="Root" IsExpanded="True">
        <controls:TreeViewItem Header="Alfa"/>
        <controls:TreeViewItem Header="Beta"/>
        <controls:TreeViewItem Header="Gamma"/>
      </controls:TreeViewItem>
    </controls:TreeView>