我制作了一个包含多行和多列的非常宽的网格,并用按钮填充网格(没有垂直滚动)。所有这些都包含在一个全景项目中。在水平滚动中需要大约3个屏幕宽度来覆盖整个网格(大约1500像素宽)。
因此,问题是当用户在全景中轻弹屏幕时,它会从全景项目的开始一直跳到它的结束。因此,有效地说,只有网格的最左侧和最右侧对用户可用(只有当他滚动得很慢时,他才能看到中间的其余内容)。
理想情况下,我会有三个全景项目,内容重叠在所有项目上,所以可以用两次轻弹来查看内容,但我无法做到这一点。是否可以在3个全景项目上重叠网格?或者,有没有可能以某种方式在中间添加某种停止,或者分割我目前拥有的一个全景项目,使屏幕停止在中间的某个位置?
我找不到任何超过2个屏幕的例子,而且包装对我来说不起作用——我想要一个固定的高度,我不能让按钮的宽度变小。不管怎样,我甚至不知道这一切有可能实现吗?也许我过度强调了全景功能。。。
谢谢
编辑:
这将是我的问题的一个例子(我有100多个按钮,所以xaml代码很大,但这与我试图解决的基本问题相同):
<controls:PanoramaItem Header="first item" Orientation="Horizontal">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="500" />
<ColumnDefinition Width="500" />
<ColumnDefinition Width="500" />
</Grid.ColumnDefinitions>
<Button Grid.Row="0"
Grid.Column="0"
Width="250"
Height="250"
Content="Button1" />
<Button Grid.Row="0"
Grid.Column="1"
Width="250"
Height="250"
Content="Button2" />
<Button Grid.Row="0"
Grid.Column="2"
Width="250"
Height="250"
Content="Button3" />
</Grid>
</controls:PanoramaItem>
所以,如果你把它放在你的全景控制中,你会得到一个非常宽的全景项目,如果你从按钮1轻弹它,它会一直跳到按钮3的最右边,所以它会滚动你经过按钮2……我希望它停止在按钮2上滚动。
您可能需要研究将PanoramaItem的Orientation属性设置为Horizontal,这应该会产生您想要的效果:-
<controls:PanoramaItem Header="first item" Orientation="Horizontal">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Grid.Row="0"
Grid.Column="0"
Width="250"
Height="250"
Content="Button1" />
<Button Grid.Row="0"
Grid.Column="1"
Width="250"
Height="250"
Content="Button2" />
<Button Grid.Row="0"
Grid.Column="2"
Width="250"
Height="250"
Content="Button3" />
</Grid>
</controls:PanoramaItem>
希望这能有所帮助。
Paul Diston
好吧,我对这个问题进行了研究,答案是我确实过度强调了全景项目的能力。
因此,如果有人想实现我试图实现的目标,即让一个全景项目延伸到3个屏幕宽度上,最好的方法是制作3个单独的全景项目,并尝试手动设置每个项目的边距,这样用户就感觉自己在浏览同一个全景项(从一个无缝切换到另一个)。
换句话说,一个全景项目被优化为最大2个屏幕宽度,这将是我的答案。任何超过2个屏幕的东西,你都会失去轻弹手势的行为,所以你会失去在中间的内容。