【问题标题】:WPF treeview with rounded corners带圆角的 WPF 树视图
【发布时间】:2010-03-25 16:51:53
【问题描述】:

我在一个充满圆角的 UI 中有一个树视图,所以我希望树视图与之匹配。是否可以在 xaml 中将树视图的边框更改为圆角?

我曾考虑隐藏边框并将树视图放在圆角矩形内,但这会失去空间并且看起来不优雅。

有什么想法吗?

【问题讨论】:

    标签: wpf treeview


    【解决方案1】:

    覆盖树视图的控件模板以更改边框。如果你有 Expression Blend,它可以很容易地为你提取默认的控制模板,然后你可以简单地在最上面的边框上打上适当的半径。

    或者,take a look at this MSDN article 包含以下树视图控件模板:

    <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 添加一点边距,以防止它弄乱圆角。谢谢!
    猜你喜欢
    • 2013-05-07
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多