带有圆角的WPF树形视图

3

我在一个拥有圆角的UI中使用了一个treeview,因此我希望treeview也能匹配。在xaml中是否可以更改treeview的边框以使其具有圆角?

我考虑过隐藏边框并将treeview放入一个圆角矩形中,但这会损失空间且看起来不够优雅。

有什么建议吗?

1个回答

7

覆盖树形视图的控件模板以更改边框。如果您有Expression Blend,则可以轻松提取默认控件模板,然后只需在最上面的边框上添加适当的半径即可。

或者,查看此MSDN文章,其中包含以下树形视图控件模板:

<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>

只需将外边框更改为具有更强的边框半径即可实现您想要的效果。


正是我一直在寻找的。直到现在我才了解ControlTemplates。我需要做的唯一微调就是在ScrollViewer上添加一点边距,以防止它影响圆角。谢谢! - BrettRobi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接