我需要从代码隐藏访问 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
的第一个子项的第一个子项。这意味着获取此边框内的 Border
和 ScrollViewer
,如中所述
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/