首页 > 解决方案 > 如何在代码中指定 ListView ScrollViewer 而不显示 ListView

问题描述

在 XAML 中,我可以这样做:

<ListView x:Name="listView" 
                  ItemsSource="{Binding ElementName=MainWindowName, Path=List}" 
                  ScrollViewer.VerticalScrollBarVisibility="Hidden"
                  />

这将显示一个没有滚动条的 ListView,这是我需要的。但是,就我而言,我需要动态添加 ListViews (1-10) 作为 PopUp 中的内容。但我发现在代码中获取 ScrollViewer 的唯一方法是像这里的示例中那样遍历可视化树。

在代码中,我尝试了以下代码:

var listView = new ListView();            
        listView.ItemsSource = list;
        popup.Child = listView;
        var scroller = listView.GetVisualChild<ScrollViewer>();

这里滚动条为空。但是,如果我popup.IsOpen = true;在获取滚动条之前添加,它会起作用。我想这并不奇怪,因为 ListView 尚未添加到任何树中?当然,在用户调用它之前显示弹出窗口不是一种选择。

您能否建议一种在代码中使其工作的方法 - 或者是否有一种方法可以在 XAML 中动态地使用 ListView。

标签: c#wpflistviewscrollviewer

解决方案


您可以像这样以编程方式设置附加属性:

ScrollViewer.SetVerticalScrollBarVisibility(listView, ScrollBarVisibility.Hidden);

推荐阅读