【发布时间】:2013-05-11 14:09:44
【问题描述】:
我在 Windows 应用商店应用程序中使用 ListView。 每当我开始在列表视图上滑动(使用模拟器点击模式)时,所有项目都会一起移动,如图所示。 如何禁用此操作事件?
【问题讨论】:
标签: wpf windows-runtime windows-store-apps winrt-xaml windows-store
我在 Windows 应用商店应用程序中使用 ListView。 每当我开始在列表视图上滑动(使用模拟器点击模式)时,所有项目都会一起移动,如图所示。 如何禁用此操作事件?
【问题讨论】:
标签: wpf windows-runtime windows-store-apps winrt-xaml windows-store
到您的ListView,添加:
ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollMode="Disabled"
如果这还不够(这有时不适用于 MouseWheel 事件,因为事件仍然倾向于在 ListView 中捕获,并且如果 ScrollViewer 内的列表特别大,我发现也倾向于发生),那么您需要创建一个自定义控件来专门忽略该事件,例如PointerWheelChanged。
public class CustomListView : ListView
{
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
var sv = this.GetTemplateChild("ScrollViewer") as UIElement;
if (sv != null)
sv.AddHandler(UIElement.PointerWheelChangedEvent, new PointerEventHandler(OnPointerWheelChanged), true);
}
private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e)
{
e.Handled = false;
}
}
这将禁用ListView 内的鼠标滚轮滚动。您必须将对 ListView 的 XAML 引用从 <ListView> 更改为 <namespace:ListView>,其中 namespace 是您在其中创建 ListView 的命名空间。
【讨论】: