Xamarin формирует проблему множественного выбора SFListview - PullRequest
2 голосов
/ 06 марта 2019

Я использую Syncfusion SFListview в моем приложении xamarin форм. Я реализовал множественный выбор ячеек списка из https://help.syncfusion.com/xamarin/sflistview/selection?cs-save-lang=1&cs-lang=xaml.It, работает нормально. Но проблема, с которой я сталкиваюсь, заключается в том, что каждый раз нам нужно держать элемент для выбора. Возможно ли множественный выбор, который выполняется только для первой ячейки и касается всех остальных ячеек?

1 Ответ

2 голосов
/ 07 марта 2019

Возможен ли множественный выбор, содержащий только первую ячейку и касающийся всех остальных ячеек?

Конечно, можно сделать это . Если вам нужны элементы с множественным выбором, я думаю, что следующие шаги позволят выполнить некоторые задачи с элементами с несколькими элементами. Изображение ниже может выглядеть так, как вам нужно.

Вы можете посмотреть содержание этой главы в ссылке на общий ресурс и образец кода , который он предоставляет.

Решение первое :( В целом приемлемо)

Если проект не возражает против добавления кнопки управления снаружи, это будет самый быстрый и простой способ. То есть добавить ToolbarItems в NavigationPage, используйте его, чтобы контролировать, можете ли вы щелкнуть несколько вариантов выбора без перехода на следующую страницу.

Добавить ToolbarItems:

<ContentPage.ToolbarItems>
        <ToolbarItem x:Name="ToolbarItemsButton" Text="MultipleSelect" Clicked="Edit_Clicked"/>
</ContentPage.ToolbarItems>

<sync:SfListView x:Name="listView"
                 SelectionGesture="Hold"
                 SelectionMode="Multiple"
                 ItemTapped="ListView_ItemTapped"
                 SelectionBackgroundColor="Transparent"
                 IsStickyHeader="True" ItemSize="70">
 ...

В ContentPage, добавить флаг к судье SelectionMode из ListView.

int flag = 0;

private void Edit_Clicked(object sender, EventArgs e)
{
    if(0 == flag)
    {
        listView.SelectionGesture = TouchGesture.Tap;
        ToolbarItemsButton.Text = "Done";
        flag = 1;
    }
    else
    {
        ToolbarItemsButton.Text = "MultipleSelect";
        listView.SelectionGesture = TouchGesture.Hold;
        flag = 0;
    }
}

Может судить, когда вы можете перейти на следующую страницу.

private void ListView_ItemTapped(object sender, Syncfusion.ListView.XForms.ItemTappedEventArgs e)
{

    if(0 == flag)
    {
        Navigation.PushAsync(new ContentPage());
    }

}

enter image description here enter image description here

Решение второе :( Рекомендуется)

SfListView имеет метод ItemHolding . Не используя другую кнопку также можно обменять SelectionMode.

Xaml код другой добавляет этот метод SfListView.

<sync:SfListView x:Name="listView"
                     SelectionGesture="Hold"
                     SelectionMode="Multiple"
                     ItemTapped="ListView_ItemTapped"
                     SelectionBackgroundColor="Transparent"
                     ItemHolding="ListView_ItemHolding" // ItemHolding
                     IsStickyHeader="True" ItemSize="70">

Когда OnHolding может что-то сделать здесь:

private void ListView_ItemHolding(object sender, ItemHoldingEventArgs e)
{
    if (0 == flag)
    {
        listView.SelectionGesture = TouchGesture.Tap;
        ToolbarItemsButton.Text = "Done";
        flag = 1;
    }
    else
    {
        listView.SelectionGesture = TouchGesture.Hold;
        ToolbarItemsButton.Text = "MultipleSelect";
        flag = 0;
    }
}

Судите, когда вы можете перейти на следующую страницу.

private void ListView_ItemTapped(object sender, Syncfusion.ListView.XForms.ItemTappedEventArgs e)
{

    if(0 == flag)
    {
        Navigation.PushAsync(new ContentPage());
    }

}

Решение Три :( Здесь не рекомендуется)

Как правило, для многократного выбора ячейки просмотра списка мы будем обрабатывать шаблон пользовательской ячейки, например, добавляя кнопку в шаблон. При нажатии элемент может быть помечен как выбранный, а пользовательский интерфейс элемента также может быть настроен как Стиль при выборе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...