c# - WPF 访问 ListView 代码隐藏的滚动查看器

标签 c# wpf listview code-behind scrollviewer

我需要从代码隐藏访问 ListView 的滚动查看器。 这是我的 ListView 的定义

<ListView Grid.Row="1" ItemsSource="{Binding Path=SpecList, UpdateSourceTrigger=PropertyChanged}"  
                            Name="mylistview"
                            ItemTemplate="{StaticResource SpecElementTemplate}"
                            Background="{StaticResource EnvLayout}"
                            ScrollViewer.HorizontalScrollBarVisibility="Visible"
                            ScrollViewer.VerticalScrollBarVisibility="Disabled"
                            ItemContainerStyle="{StaticResource MyStyle}"
                            BorderBrush="Blue"
                            BorderThickness="20"
                            Margin="-2">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

如何获取滚动查看器?

谢谢

安德里亚

最佳答案

有几种方法可以获取ScrollViewer。最简单的解决方案是获取 ListView 的第一个子项的第一个子项。这意味着获取此边框内的 BorderScrollViewer,如中所述 this answer :

// Get the border of the listview (first child of a listview)
Decorator border = VisualTreeHelper.GetChild(mylistview, 0) as Decorator;

// Get scrollviewer
ScrollViewer scrollViewer = border.Child as ScrollViewer;

第二种方法是扫描所有子递归以找到 ScrollViewer。 Matt Hamilton 在 this question 中的回答中对此进行了描述。 .您可以简单地使用此函数来获取 ScrollViewer

ScrollViewer scrollViewer = GetChildOfType<ScrollViewer>(mylistview);

第二个解决方案更为通用,如果您的 ListView 模板已被编辑,它也可以工作。

关于c# - WPF 访问 ListView 代码隐藏的滚动查看器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43053345/

相关文章:

c# - C++ AMP计算与WPF渲染显卡双用性能

c# - 动态更改母版页 .. 从母版页?

c# - 突出显示 WPF 数据网格中的单元格时没有可见文本

c# - 与更传统的语言相比,用 F# 编写什么样的应用程序会受益?

android - 在自定义 ListView 中显示联系人号码和联系人姓名

c# - .NET面试,代码结构和设计

wpf - 适用于 WinXP + WPF + .NET 4.0 的 VS 安装项目安装程序的最佳简单替代品是什么?

wpf - 从 Viewmodel 更改的文本框值未反射(reflect)在 UI 上

java - 无法从 AsyncTask 填充 ListView

安卓 ListView : How to skip a row when scrolling listview