为什么 ScrollViewer 中鼠标滚轮滚动消失了?

发布于 2024-12-18 01:39:16 字数 275 浏览 2 评论 0原文

我在 TreeView 周围添加 ScrollViewer 有两个原因:

  1. 我想要更多地控制 TreeView 滚动条的外观

  2. 我想要更多的控制在我的 TreeView 滚动条位置上,因为我想同步一些树视图。

似乎一旦我在 TreeView 周围添加 ScrollView ,我就失去了使用鼠标滚动器滚动它的能力。

我想我的问题分为两部分。通过添加自己的 ScrollView 我可以获得什么好处吗?这是设计使然吗?

I am adding a ScrollViewer around my TreeView for 2 reasons:

  1. i want more control over the way my TreeView scroll bar looks

  2. i want more control over my TreeView scroll bars position, because i want to synchronize a few tree views.

it seems that as soon as i add a ScrollView around TreeView, i lose the ability to scroll it using mouse scroller.

I guess my question is 2 part. Do i gain anything by adding my own ScrollView, and is this behavior by design?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘寄 2024-12-25 01:39:16

我认为您的任何一个要求都不排除使用 TreeView 模板中的 ScrollViewer 。您可能需要重新模板化 TreeView 才能实现您的目标。

这也揭示了为什么滚动不能按预期工作。您实际上已经在 ScrollViewer 周围获得了一个 ScrollViewer。为此,您需要做的就是从 TreeView 模板中删除 ScrollViewer,或者禁用它:

<TreeView ScrollViewer.VerticalScrollBarVisibility="Disabled" ...>

也就是说,我确实认为您的情况下更好的选择可能是重新模板/重新设计 TreeView 本身。

I don't think either of your requirements precludes using the ScrollViewer that is within the TreeView template. You might need to re-template the TreeView to achieve your goals.

This also sheds light on why your scrolling doesn't work as expected. You've effectively got a ScrollViewer around a ScrollViewer. What you would need to do for that to work is either remove the ScrollViewer from the TreeView template, or disable it:

<TreeView ScrollViewer.VerticalScrollBarVisibility="Disabled" ...>

That said, I do think the better option in your case may be to re-template/re-style the TreeView itself.

木落 2024-12-25 01:39:16

您可以重新模板树视图以删除内部滚动查看器

<ScrollViewer Height="200" Width="200">
  <TreeView>
    <TreeView.Resources>
      <Style TargetType="{x:Type TreeView}">
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="TreeView">
              <Border Name="Border"
                      BorderBrush="{TemplateBinding BorderBrush}"
                      Background="{TemplateBinding Background}"
                      CornerRadius="1"
                      BorderThickness="1">
                <ItemsPresenter />
              </Border>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </TreeView.Resources>
    <TreeViewItem IsExpanded="True">Test001</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test002</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test003</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test004</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test005</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test006</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test007</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test008</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test009</TreeViewItem>
  </TreeView>
</ScrollViewer>

you can retemplate your treeview to remove the inner scrollviewer

<ScrollViewer Height="200" Width="200">
  <TreeView>
    <TreeView.Resources>
      <Style TargetType="{x:Type TreeView}">
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="TreeView">
              <Border Name="Border"
                      BorderBrush="{TemplateBinding BorderBrush}"
                      Background="{TemplateBinding Background}"
                      CornerRadius="1"
                      BorderThickness="1">
                <ItemsPresenter />
              </Border>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </TreeView.Resources>
    <TreeViewItem IsExpanded="True">Test001</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test002</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test003</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test004</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test005</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test006</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test007</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test008</TreeViewItem>
    <TreeViewItem IsExpanded="True">Test009</TreeViewItem>
  </TreeView>
</ScrollViewer>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文