gpt4 book ai didi

wpf - 在 C# 中获取对我的 WPF ListBox 的 ScrollViewer 的引用?

转载 作者:行者123 更新时间:2023-12-01 09:02:38 28 4
gpt4 key购买 nike

我认为这应该很容易,但我很难做到。

如何在 C# 中获取对 ListBox 的滚动查看器的引用?我已经尝试了几乎所有我能想到的东西。 ListBox 位于 WPF 自定义控件中,因此我们使用 Template.FindName 来获取对所有控件的引用。我的列表框如下所示:

<ListBox x:Name="PART_SoundList" 
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Hidden" Focusable="False" FocusVisualStyle="{x:Null}"
HorizontalAlignment="Center" VerticalAlignment="Bottom" BorderThickness="0"
ItemContainerStyleSelector="{StaticResource ListBoxItemAlternatingStyleSelector}"
ItemsSource="{Binding}" >

<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" Height="850" Focusable="False" Panel.ZIndex="999" >
<WrapPanel.RenderTransform>
<TransformGroup>
<ScaleTransform CenterX="0" CenterY="0" ScaleX=".75" ScaleY=".57" />
</TransformGroup>
</WrapPanel.RenderTransform>
</WrapPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>

<ListBox.Template>
<ControlTemplate>
<ScrollViewer x:Name="Scroller" VerticalAlignment="Bottom" Focusable="False" Style="{StaticResource HorizontalScroller}" >
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Focusable="False" Panel.ZIndex="999" />
</ScrollViewer>
</ControlTemplate>
</ListBox.Template>

</ListBox>

Template.FindName("Scroller",this) as ScrollViewer 结果为 null。

有什么想法吗?

最佳答案

您可能试图过早获得对 ScrollViewer 的引用。尝试在加载的事件中移动代码并检查它是否仍然返回 null:

在您的 customControl/form 构造函数中:

this.Loaded += MainWindow_Loaded;

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var x = PART_SoundList.Template.FindName("Scroller", PART_SoundList);
}

关于wpf - 在 C# 中获取对我的 WPF ListBox 的 ScrollViewer 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3963341/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com