Реализовать список элементов с множественным выбором

В моем приложении WP8 я хотел бы реализовать функциональность, очень похожую на ту, что присутствует в стандартном почтовом приложении — возможность для пользователя выбирать несколько элементов из списка. Я предоставил несколько скриншотов, чтобы проиллюстрировать это поведение:

Нормальное состояние:
Нормальное состояние

Пользователь касается левого угла элемента, и он становится синим: Пользователь касается левого угла элемента, и он становится синим

Элемент выбран
Элемент выбран

Мой вопрос заключается в том, является ли эта возможность множественного выбора стандартной опцией для некоторого элемента управления контейнером или мне нужно выполнить какое-то специальное программирование для достижения этого? В последнем случае, какой лучший подход вы бы использовали для реализации этого, поделитесь своими мыслями.


person src091    schedule 02.01.2013    source источник
comment
Антон, у меня точно такое же требование, как у вас, когда мне нужно выполнить анимацию скрытия показа над флажком в данном списке. Пожалуйста, поделитесь, если вы нашли решение   -  person    schedule 01.09.2014


Ответы (2)


Для множественного выбора WP8 вам потребуется использовать LongListMultiSelector из Windows Phone Toolkit.

Примеры кода по использованию LongListMultiSelector можно найти здесьздесь код позади). Вот соответствующие фрагменты кода XAML:

    <phone:PivotItem x:Name="BuddiesPivotItem" Header="Std longlistmultiselector">
        <toolkit:LongListMultiSelector x:Name="buddies" Background="Transparent"
                Margin="0,-8,0,0"
                ItemsSource="{StaticResource buddies}"
                LayoutMode="List"
                IsGroupingEnabled="True"
                HideEmptyGroups="True"
                JumpListStyle="{StaticResource BuddiesJumpListStyle}"
                GroupHeaderTemplate="{StaticResource BuddiesGroupHeaderTemplate}"
                ItemTemplate="{StaticResource BuddiesItemTemplate}"
    />
    </phone:PivotItem>

    <phone:PivotItem x:Name="GridModeItem" Header="Grid mode">
        <toolkit:LongListMultiSelector x:Name="GridSelector"
               ItemsSource="{StaticResource PicturesAlbum}"
               IsGroupingEnabled="False"
               GridCellSize="210,180"
               LayoutMode="Grid"
               HideEmptyGroups="True"
               ItemTemplate="{StaticResource PictureItemTemplate}"
               IsSelectionEnabledChanged="OnGridSelectorIsSelectionEnabledChanged"
               SelectionChanged="OnGridSelectorSelectionChanged"
        />
    </phone:PivotItem>

Когда вы запускаете этот фрагмент кода, вы можете увидеть следующее:

Экран печати LongListMutliSelector

Подробнее о наборе инструментов для Windows Phone 8 см. здесь.

person JustinAngel    schedule 02.01.2013

LonglistmultiSelector отсутствует в моем наборе инструментов.

если я запускаю следующий код:

<toolkit:LongListMultiSelector x:Name="EmailList" 
                                                Margin="0,14,-12,0"
                                                ItemsSource="{StaticResource EmailCollection}"
                                                LayoutMode="List"
                                                SelectionChanged="OnEmailListSelectionChanged"
                                                          IsSelectionEnabledChanged="OnEmailListIsSelectionEnabledChanged"
                                                ItemTemplate="{StaticResource EmailItemTemplate}"
                                                ItemInfoTemplate="{StaticResource EmailItemInfoTemplate}"
            />

если получить ошибку: Ошибка 1 Имя «LongListMultiSelector» не существует в пространстве имен «clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit».

person Amroj    schedule 29.09.2013
comment
Возможно, вам придется добавить следующую строку среди других объявлений xmlns в верхней части MainPage.xaml: xmlns:toolkit=clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit - person triandicAnt; 07.10.2013