【发布时间】:2015-07-10 06:46:42
【问题描述】:
我的 WP8.1 应用程序 (WinRT) 中的 ListBox 出现问题,我无法使其水平滚动。 5 张图片适合屏幕,第 6 张之后的所有内容都被简单裁剪。
我尝试在列表框周围添加ScrollViewer,在ItemsPanelTemplate 周围添加ListBox,但没有任何效果。
这是我的 xaml 代码
<ListBox x:Name="AppBarMenu"
Grid.Row="1"
Canvas.ZIndex="1"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
Background="{StaticResource BackgroundColorApp}"
ItemTemplate="{StaticResource StackMenuItem}"
ItemsSource="{Binding}"
Style="{StaticResource ListBoxHorizontal}"
ItemContainerStyle="{StaticResource ListBoxContainerStylePP}"
Foreground="{StaticResource TBColorNonSelected}"
SelectedIndex="{Binding SelectedIndex, ElementName=PetProtectorFrames, Mode=TwoWay}"
Height="0"
VerticalAlignment="Top"
SelectionChanged="AppBarMenu_SelectionChanged"
ScrollViewer.VerticalScrollBarVisibility="Disabled">
</ListBox>
这是ItemsPanelTemplate的模板
<Style x:Key="ListBoxHorizontal"
TargetType="ListBox">
<Setter Property="BorderThickness"
Value="0" />
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
我尝试添加 VirtualizationStackpanel 而不是堆栈面板作为 ItemsPanemTemplate,但它的作用相同。而当我尝试设置属性CanHorizontallyScroll=true时,我得到两个错误,首先是VirtualizationStackpanel中不存在这个属性,删除这个属性并再次返回后,我得到错误Syntax Error found in XBF generation。
我尝试自己搜索解决方案,查看这里,用谷歌搜索,但找不到解决方案。有人可以帮我弄这个吗?我用它来搞砸了 2 天。
更新:
列表框在网格内,设置如下:
<Grid x:Name="MainGrid">
<Grid.RowDefinitions>
<RowDefinition Height="0.091*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="0.01*" />
<RowDefinition Height="0.9*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
第二行高度设置为自动,因为我正在为列表框高度设置动画。列表框充当 AppBar,当我按下应用栏上的按钮时,列表框会显示包含菜单项。
解决方案更新:
受 SWilko 提供的解决方案的启发,我还设法通过稍微配置“ListBox”解决了我的问题,因此对我之前代码的修复如下所示:
<ListBox x:Name="AppBarMenu"
Grid.Row="1"
Canvas.ZIndex="1"
ScrollViewer.HorizontalScrollMode="Enabled"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollMode="Disabled"
Background="{StaticResource BackgroundColorApp}"
ItemTemplate="{StaticResource StackMenuItem}"
ItemsSource="{Binding}"
Style="{StaticResource ListBoxHorizontal}"
ItemContainerStyle="{StaticResource ListBoxContainerStylePP}"
Foreground="{StaticResource TBColorNonSelected}"
SelectedIndex="{Binding SelectedIndex, ElementName=PetProtectorFrames, Mode=TwoWay}"
Height="0"
VerticalAlignment="Top"
SelectionChanged="AppBarMenu_SelectionChanged">
</ListBox>
所有应该做的就是禁用垂直滚动并启用水平滚动。
【问题讨论】:
-
您能否发布其余的 xaml,即
Grid或ListBox'周围的面板? -
我更新了问题
标签: c# wpf xaml windows-phone-8 listbox