带圆角的 WPF TreeView

标签 wpf treeview

我的用户界面中有一个充满圆角的 TreeView ,所以我希望 TreeView 能够匹配。是否可以在 xaml 中将 TreeView 的边框更改为圆角?

我考虑过隐藏边框并将 TreeView 放在圆角矩形内,但这会损失空间并且看起来不优雅。

有什么想法吗?

最佳答案

覆盖 TreeView 的控件模板以更改边框。如果您有Expression Blend,它可以轻松地为您提取默认的控制模板,然后您只需在最顶部的边框上拍打适当的半径即可。

或者,take a look at this MSDN article其中包含以下 TreeView 控件模板:

<Style x:Key="{x:Type TreeView}" TargetType="TreeView">
  <Setter Property="OverridesDefaultStyle" Value="True" />
  <Setter Property="SnapsToDevicePixels" Value="True" />
  <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
  <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="TreeView">
        <Border 
          Name="Border" 
          CornerRadius="1" 
          Background="{StaticResource WindowBackgroundBrush}"
          BorderBrush="{StaticResource SolidBorderBrush}"
          BorderThickness="1" >
          <ScrollViewer 
            Focusable="False"
            CanContentScroll="False"
            Padding="4">
            <ItemsPresenter/>
          </ScrollViewer>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

只需更改外边框以具有更强的边框半径即可达到您想要的效果。

关于带圆角的 WPF TreeView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2517569/

相关文章:

WPF TreeView 和虚拟化问题

c# - 在具有分层数据模板的 TreeView 中绑定(bind)上下文菜单命令

c# - 如何为 TreeView 中的部分而非所有节点设置图像?

c# - WPF 应用程序中的 TextBox.Text 内存泄漏

wpf - 运行时如何处理 XAML 命名空间?

c# - Tha xaml 图形在页面中有多个位置时消失

c# - 展开 TreeViewItem 时调用命令

wpf - 滚动和拉伸(stretch)扩展器的内容

wpf - 如何在 ListView 控件中设置SelectedItem?

php - 如何使递归 TreeView 可折叠