【问题标题】:C# Windows RT Listbox Horizontal Scroll IssueC# Windows RT 列表框水平滚动问题
【发布时间】:2012-08-04 12:05:41
【问题描述】:

我在网格中放置了以下列表框控件,但列表框无法正确水平滚动。如果您将滚动条拖到它上面可以正常工作,但是如果您单击箭头,它只会滚动到一半。如何解决此问题?

<Page
x:Class="App5.MainPage"
IsTabStop="false"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App5"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
      <ListBox Height="400" Width="200" 
       ScrollViewer.HorizontalScrollBarVisibility="Auto" 
      ScrollViewer.HorizontalScrollMode="Auto">
      <ListBoxItem Content="This is my horizontal test # 1" />
      <ListBoxItem Content="This is my second horizontal test which spams across" />
      </ListBox>
</Grid>
</Page>

谢谢

【问题讨论】:

  • 你的 ListBox 上有什么项目吗?
  • 是的,我以编程方式将项目添加到列表框中。如果我拖动滚动条,滚动效果很好。

标签: c# .net microsoft-metro windows-runtime winrt-xaml


【解决方案1】:

在我看来,这就像 WinRT 中的一个错误。您仍然可以单击 Horizo​​ntalLargeIncrease 重复按钮,这样就可以了。也许您可以编辑 ListBox/ScrollViewer/ScrollBar/Horizo​​ntalLargeIncrease RepeatButton 的模板,以扩展其点击/触摸目标以覆盖 Horizo​​ntalSmallIncrease RepeatButton 的区域,因此无论您点击哪里 - 它仍然会完全滚动。

或者,您可以将 ListBox.ItemsPanel/ItemsPanelTemplate 设置为 StackPanel。请注意,默认值是 VirtualizingStackPanel,它更适合长列表,因为与 StackPanel 相比,它不会生成绑定集合中的所有项目,但您看到的问题似乎与 VirtualizingStackPanel 有关。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多