Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Listview 表单列表视图在UWP上禁用选择_Listview_Xamarin_Uwp_Xamarin.forms - Fatal编程技术网

Listview 表单列表视图在UWP上禁用选择

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

使用Xamarin.Forms ListView时,是否有任何方法可以在允许选择单元格布局内的元素的同时,将ListView自动滚动到UWP上的选定单元格?此外,在相同的情况下,是否有任何方法可以删除单元格上的“选定”动画

我已通过在ListViewRenderer中完全禁用命中检测来实现视觉效果,如下所示:

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>

让我知道,如果这有帮助