Listview 表单列表视图在UWP上禁用选择
使用Xamarin.Forms ListView时,是否有任何方法可以在允许选择单元格布局内的元素的同时,将ListView自动滚动到UWP上的选定单元格?此外,在相同的情况下,是否有任何方法可以删除单元格上的“选定”动画 我已通过在ListViewRenderer中完全禁用命中检测来实现视觉效果,如下所示:Listview 表单列表视图在UWP上禁用选择,listview,xamarin,uwp,xamarin.forms,Listview,Xamarin,Uwp,Xamarin.forms,使用Xamarin.Forms ListView时,是否有任何方法可以在允许选择单元格布局内的元素的同时,将ListView自动滚动到UWP上的选定单元格?此外,在相同的情况下,是否有任何方法可以删除单元格上的“选定”动画 我已通过在ListViewRenderer中完全禁用命中检测来实现视觉效果,如下所示: var style = new Style(typeof(ListViewItem)); var setter = new Setter(ListViewItem.IsHitTestVis
var style = new Style(typeof(ListViewItem));
var setter = new Setter(ListViewItem.IsHitTestVisibleProperty, false);
style.Setters.Add(setter);
((ListView)Control).ItemContainerStyle = style;
然而,这显然也会禁用单元内元素的命中检测
在UWP中是否有任何方法可以实现禁用动画/ListView自动滚动,同时仍允许检测单元格内的按钮等?在UWP上,
ListView
s有一个SelectionMode
属性,可以设置为None
。这可能是禁用自动滚动的最简单方法。不幸的是,这个属性没有反映在ListView
的Xamarin.Forms抽象中
若要设置此选项(仅在UWP上),您实际上不需要自定义渲染器,应该使用一个。因此,您只需在Xamarin.Forms UWP项目中创建一个NoSelectEffect
类,并使其如下所示:
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.Effects>
<local:NoSelectionEffect />
</ListView.Effects>
</ListView>
让我知道,如果这有帮助