我在ScatterViewItem中有一个SurfaceListBox。它很好,但问题是如果我不选择SurfaceListBox的任何项目,我想移动ScatterviewItem。
我有以下代码:
<Grid Background="{StaticResource WindowBackground}" >
<s:ScatterView>
<s:ScatterViewItem >
<Viewbox>
<Grid>
<Grid.RowDefinitions >
<RowDefinition/>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions >
<Label Content="Test" Grid.Row ="0"/>
<s:SurfaceListBox Grid.Row="1" Height="200" >
<s:SurfaceListBoxItem Content ="Test"/>
<s:SurfaceListBoxItem Content ="Test2"/>
<s:SurfaceListBoxItem Content ="Test3"/>
<s:SurfaceListBoxItem Content ="Test4"/>
</s:SurfaceListBox >
<Label Content="Test5" Grid.Row ="2"/>
</Grid>
</Viewbox >
</s:ScatterViewItem >
</s:ScatterView >
</Grid>
如果我触摸任何标签,Scatterview会响应并且我可以移动它,但如果我按下SurfaceListBox,ScatterView就不会与我的手指交互(即使它有一个项目或没有)。
我该怎么办?我已经检查了scatterview事件,我不知道是否有人使用它来启用它。
先谢谢了,
保罗
答案 0 :(得分:0)
退一步思考一下你真正想要发生的事情......写下一系列陈述,例如“当用户将手指放在X上并向Y方向移动时,Z应该发生”
通常,这样做会说明您尝试做的事情存在一些冲突。
如果您希望用户能够将他们的手指放在列表项上并将该移动转换为选择项目,滚动列表,移动容器或开始拖放项目。你从用户那里获得的模糊输入真的没有办法做到这一切。因此,要非常小心,添加某些功能不会破坏其他功能或使您的应用与其他Surface应用程序的行为大不相同。
那就是说,你问题的技术答案很简单......听听ScatterViewItem上的PreviewContactChanged。一旦确定联系人在正确的方向上移动合理的阈值距离,请调用contact.Capture(scatterViewItem) - 这会将联系人的“所有权”从列表框移动到scatterviewitem,然后使用联系人的输入四处走动。
答案 1 :(得分:0)
谢谢罗伯特!
我确实检查了ScatterViewItem的PreviewContactChanged,但我不知道如何处理它。 有人给了我这个例子:http://blog.endquote.com/post/802771198/surfacescrollviewer-behaviors 我会尝试的。
再次感谢您的回答! 保罗