我创建了一个使用C#/ XAML的Windows 8商店应用程序。我的界面包含一个滚动列表,该列表使用ScrollViewer
呈现。我希望能够处理列表中元素的操纵事件,但是,将ManipulationMode
设置为除列表元素上的其他任何内容都会导致我的列表不再滚动。ScrollViewer和处理子元素上的操作事件
这里是UI的简化版本:
<ScrollViewer>
<Border/> <!-- these contain child content -->
<Border/>
<Border/>
<!-- Set ManipulationMode on an element in order to receive manipulation events -->
<!-- This causes the scroll viewer to stop working! -->
<Border ManipulationMode="All"
ManipulationDelta="..."/>
<Border/>
<Border/>
</ScrollViewer>
我明白的WinRT ScrollViewer
使用的System
出于性能方面的特殊ManipulationMode
,但我想有一个垂直滚动列表,包含元素响应水平操纵/手势。任何人都可以想到一个创造性的解决方法,这将使这成为可能吗?
哇 - 这是很多工作。所以你基本上照顾自己滚动ScrollViewer吗?这是否意味着您还必须执行自己的惯性计算才能自然滚动?或者当你改变垂直偏移时它会自动执行此操作吗? – ColinE
木星中的操作默认情况下启用了内置惯性,因此您可以获得。如果由于惯性而发生滚动,您只需确保不要在列表末尾挤压ScrollContentPresenter。操作通常非常流畅,但您可以使用ScrollViewer动画,如[WinRT XAML Toolkit](http://bit.ly/WinRTXamlToolkit)中的动画来平滑使用滚轮时的滚动。顺便说一句,我忘了提及你可能还想处理设置重点项目时,当你点击覆盖... :) –
@ColinE检查我的答案[这个问题](http:// stackoverflow。com/questions/14153038/how-to-allow-manipulation-within-listview-gridview-item-controls-while-allow/14161596#14161596)另一种解决方案。 –