Xamarin формы: выделение всей строки при нажатии на элемент FlowListView? - PullRequest
0 голосов
/ 18 января 2019

Я добавил FlowListView в свой проект. Как упомянуто в FAQ Я сталкиваюсь с проблемой выделения всей строки при нажатии одного элемента в windows, такой проблемы в android нет. Я добавил пользовательские рендеры, как показано ниже:

В основном проекте:

using DLToolkit.Forms.Controls;

namespace Mynamespace
{
    public class CustomFlowListView : FlowListView
    {
    }
}

В UWP:

using Listpm;
using Listpm.UWP;
using Xamarin.Forms;
using Xamarin.Forms.Platform.UWP;

[assembly: ExportRenderer(typeof(CustomFlowListView), typeof(CustomListViewRenderer))]

namespace Listpm.UWP
{
    class CustomListViewRenderer : ListViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
        {
            base.OnElementChanged(e);

            if (List != null)
                List.SelectionMode = Windows.UI.Xaml.Controls.ListViewSelectionMode.None;
        }
    }
}

В xaml добавлено <local:CustomFlowListView> вместо <flv:FlowListView>.

<local:CustomFlowListView
     FlowColumnCount="2" 
     SeparatorVisibility="None" 
     HasUnevenRows="false"
     RowHeight="200"
     FlowItemsSource="{Binding AllItems}">
     <flv:FlowListView.FlowColumnTemplate>
       <DataTemplate>
          <StackLayout
             HorizontalOptions="FillAndExpand"
             VerticalOptions="FillAndExpand"> 
              <Image/>
             </StackLayout>
        </DataTemplate>
     </flv:FlowListView.FlowColumnTemplate>
  </local:CustomFlowListView>

Есть ли какие-либо другие изменения вместо этого для решения этой проблемы?

1 Ответ

0 голосов
/ 21 января 2019

Как отключить подсветку всей строки при нажатии?

Вам также нужно добавить List.IsItemClickEnabled = false. И это не повлияет на FlowItemTapped событие. защищенная переопределенная пустота

OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ListView> e)
{
    base.OnElementChanged(e);

    if (List != null)
        List.SelectionMode = Windows.UI.Xaml.Controls.ListViewSelectionMode.None;
        List.IsItemClickEnabled = false;
}
...