在UWP上,ListView
有一個SelectionMode
屬性,可以設置爲None
。這可能是禁用自動滾動的最簡單方法。不幸的是,這個屬性並沒有反映在ListView
的Xamarin.Forms抽象中。
要設置此項(僅適用於UWP),您並不需要自定義渲染器,應該執行Xamarin.Forms Effect這項工作。所以,你可以簡單地創建Xamarin.Forms UWP項目內的NoSelectionEffect
類,讓它看起來像這樣:
using ListViewScrollingTestForms.UWP;
using Xamarin.Forms;
using Xamarin.Forms.Platform.UWP;
[assembly: ResolutionGroupName("MyCompany")]
[assembly: ExportEffect(typeof(NoSelectionEffect), "NoSelectionEffect")]
namespace ListViewScrollingTestForms.UWP
{
public class NoSelectionEffect : PlatformEffect
{
protected override void OnAttached()
{
// Set selection mode to 'None'
(Control as Windows.UI.Xaml.Controls.ListView).SelectionMode = Windows.UI.Xaml.Controls.ListViewSelectionMode.None;
}
protected override void OnDetached()
{
// Set selection mode back to the default one of Xamarin.Forms (Single)
(Control as Windows.UI.Xaml.Controls.ListView).SelectionMode = Windows.UI.Xaml.Controls.ListViewSelectionMode.Single;
}
}
}
接下來,你需要創建一個類的Xamarin.Forms PCL內部的渲染:
public class NoSelectionEffect : RoutingEffect
{
public NoSelectionEffect() : base("MyCompany.NoSelectionEffect") {}
}
現在你可以附加效果到你的ListView
,這應該做的工作。
<ListView>
<ListView.Effects>
<local:NoSelectionEffect />
</ListView.Effects>
</ListView>
讓我知道,如果這有幫助!
這很好,謝謝! –