How to Use
This control works exactly like the ListView control. Simply replacing any ListView control with the MultiSelectListView control and you can instantly start multiselecting by tapping on the left edge of an item.

Changes from ListView
  • The SelectionMode property's default binding mode is no long TwoWay by default. It is now OneWay. Explicitly defining a two way binding will restore original behavior when needed and is the recommended way of binding to this property.
<q:MultiSelectListView SelectionMode="{Binding SelectionMode, Mode=TwoWay}" />
  • There is a new SelectionModeChanged event to detect when SelectionMode has changed. With the ListView, you had to depend on binding to the SelectionMode property and manually keep track of it.

Default Style
<x:Double x:Key="EdgeMultiSelectButtonWidth">45</x:Double>
<Thickness x:Key="EdgeMultiSelectButtonMargin">0,0,-26,0</Thickness>
<x:Double x:Key="EdgeMultiSelectButtonVisualWidth">15</x:Double>
<Thickness x:Key="ListViewItemCheckBoxPadding">19,0,0,0</Thickness>
<Style TargetType="common:EdgeSelectButton">
    <Setter Property="Background"
            Value="{ThemeResource PhoneAccentBrush}" />
    <Setter Property="Width"
            Value="{ThemeResource EdgeMultiSelectButtonWidth}" />
    <Setter Property="Margin"
            Value="{ThemeResource EdgeMultiSelectButtonMargin}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="common:EdgeSelectButton">
                <Grid Background="Transparent">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualStateGroup.Transitions>
                                <VisualTransition From="Pressed"
                                                  To="PointerOver">
                                    <Storyboard>
                                        <DoubleAnimation Storyboard.TargetName="VisualFeedbackIndicator"
                                                         Storyboard.TargetProperty="Opacity"
                                                         Duration="0:0:0.5"
                                                         To="0" />
                                    </Storyboard>
                                </VisualTransition>
                                <VisualTransition From="PointerOver"
                                                  To="Normal">
                                    <Storyboard>
                                        <DoubleAnimation Storyboard.TargetName="VisualFeedbackIndicator"
                                                         Storyboard.TargetProperty="Opacity"
                                                         Duration="0:0:0.5"
                                                         To="0" />
                                    </Storyboard>
                                </VisualTransition>
                                <VisualTransition From="Pressed"
                                                  To="Normal">
                                    <Storyboard>
                                        <DoubleAnimation Storyboard.TargetName="VisualFeedbackIndicator"
                                                         Storyboard.TargetProperty="Opacity"
                                                         Duration="0:0:0.5"
                                                         To="0" />
                                    </Storyboard>
                                </VisualTransition>
                            </VisualStateGroup.Transitions>
                            <VisualState x:Name="Normal">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="VisualFeedbackIndicator"
                                                     Storyboard.TargetProperty="Opacity"
                                                     Duration="0:0:0.5"
                                                     To="0" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="PointerOver" />
                            <VisualState x:Name="Pressed">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="VisualFeedbackIndicator"
                                                     Storyboard.TargetProperty="Opacity"
                                                     Duration="0"
                                                     To="1" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Disabled">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground"
                                                                   Storyboard.TargetName="ContentPresenter">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{ThemeResource ButtonDisabledForegroundThemeBrush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush"
                                                                   Storyboard.TargetName="Border">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{ThemeResource ButtonDisabledBorderThemeBrush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background"
                                                                   Storyboard.TargetName="Border">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{ThemeResource ButtonDisabledBackgroundThemeBrush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <Border x:Name="VisualFeedbackIndicator"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Width="{StaticResource EdgeMultiSelectButtonVisualWidth}"
                            Opacity="0"
                            HorizontalAlignment="Left">
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style x:Key="MultiSelectListViewItemStyle"
       TargetType="ListViewItem">
    <Setter Property="HorizontalContentAlignment"
            Value="Stretch" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListViewItem">
                <Border x:Name="OuterContainer"
                        RenderTransformOrigin="0.5,0.5">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal" />
                            <VisualState x:Name="Pressed">
                                <Storyboard>
                                    <PointerDownThemeAnimation Storyboard.TargetName="TiltContainer" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="CheckboxPressed">
                                <Storyboard>
                                    <PointerDownThemeAnimation Storyboard.TargetName="CheckboxTiltContainer" />
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle"
                                                                   Storyboard.TargetProperty="Fill">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{ThemeResource CheckBoxPressedBackgroundThemeBrush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph"
                                                                   Storyboard.TargetProperty="Fill">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{ThemeResource CheckBoxPressedForegroundThemeBrush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Disabled">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="contentPresenter"
                                                     Storyboard.TargetProperty="Opacity"
                                                     Duration="0"
                                                     To="{ThemeResource ListViewItemDisabledThemeOpacity}" />
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalRectangle"
                                                                   Storyboard.TargetProperty="Stroke"
                                                                   Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{ThemeResource CheckBoxDisabledBorderThemeBrush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph"
                                                                   Storyboard.TargetProperty="Fill"
                                                                   Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="{ThemeResource CheckBoxDisabledForegroundThemeBrush}" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedBorder"
                                                                   Storyboard.TargetProperty="BorderBrush"
                                                                   Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="Transparent" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedEarmark"
                                                                   Storyboard.TargetProperty="Fill"
                                                                   Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="Transparent" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedGlyph"
                                                                   Storyboard.TargetProperty="Fill"
                                                                   Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="Transparent" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualStateGroup.Transitions>
                                <VisualTransition From="Pressed"
                                                  To="Normal">
                                    <Storyboard>
                                        <PointerUpThemeAnimation Storyboard.TargetName="TiltContainer" />
                                    </Storyboard>
                                </VisualTransition>
                            </VisualStateGroup.Transitions>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="SelectionStates">
                            <VisualState x:Name="Unselected" />
                            <VisualState x:Name="Selected">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="CheckGlyph"
                                                     Storyboard.TargetProperty="Opacity"
                                                     Duration="0"
                                                     To="1" />
                                    <DoubleAnimation Storyboard.TargetName="SelectedCheckMark"
                                                     Storyboard.TargetProperty="Opacity"
                                                     Duration="0"
                                                     To="1" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="SelectedUnfocused">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="CheckGlyph"
                                                     Storyboard.TargetProperty="Opacity"
                                                     Duration="0"
                                                     To="1" />
                                    <DoubleAnimation Storyboard.TargetName="SelectedCheckMark"
                                                     Storyboard.TargetProperty="Opacity"
                                                     Duration="0"
                                                     To="1" />
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="DataVirtualizationStates">
                            <VisualState x:Name="DataAvailable" />
                            <VisualState x:Name="DataPlaceholder">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PlaceholderTextBlock"
                                                                   Storyboard.TargetProperty="Visibility"
                                                                   Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="Visible" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PlaceholderRect"
                                                                   Storyboard.TargetProperty="Visibility"
                                                                   Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                                Value="Visible" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="MultiSelectStates">
                            <VisualState x:Name="NoMultiSelect">
                                <Storyboard>
                                    <DoubleAnimation To="0"
                                                     Duration="0"
                                                     Storyboard.TargetName="CheckboxContainer"
                                                     Storyboard.TargetProperty="Opacity" />
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="EdgeButton"
                                                                   Storyboard.TargetProperty="IsHitTestVisible">
                                        <ObjectAnimationUsingKeyFrames.KeyFrames>
                                            <DiscreteObjectKeyFrame KeyTime="0"
                                                                    Value="True" />
                                        </ObjectAnimationUsingKeyFrames.KeyFrames>
                                    </ObjectAnimationUsingKeyFrames>
                                    <DoubleAnimation To="-47"
                                                     Duration="0"
                                                     Storyboard.TargetName="CheckboxContainerTranslateTransform"
                                                     Storyboard.TargetProperty="X">
                                        <DoubleAnimation.EasingFunction>
                                            <ExponentialEase EasingMode="EaseOut"
                                                             Exponent="5" />
                                        </DoubleAnimation.EasingFunction>
                                    </DoubleAnimation>
                                    <DoubleAnimation To="0"
                                                     Duration="0:0:0.25"
                                                     Storyboard.TargetName="ContentBorderTranslateTransform"
                                                     Storyboard.TargetProperty="X">
                                        <DoubleAnimation.EasingFunction>
                                            <ExponentialEase EasingMode="EaseOut"
                                                             Exponent="5" />
                                        </DoubleAnimation.EasingFunction>
                                    </DoubleAnimation>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="ListMultiSelect">
                                <Storyboard>
                                    <DoubleAnimation To="1"
                                                     Duration="0"
                                                     Storyboard.TargetName="CheckboxContainer"
                                                     Storyboard.TargetProperty="Opacity" />
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="EdgeButton"
                                                                   Storyboard.TargetProperty="IsHitTestVisible">
                                        <ObjectAnimationUsingKeyFrames.KeyFrames>
                                            <DiscreteObjectKeyFrame KeyTime="0"
                                                                    Value="False" />
                                        </ObjectAnimationUsingKeyFrames.KeyFrames>
                                    </ObjectAnimationUsingKeyFrames>
                                    <DoubleAnimation To="0"
                                                     Duration="0:0:0.2"
                                                     Storyboard.TargetName="CheckboxContainerTranslateTransform"
                                                     Storyboard.TargetProperty="X">
                                        <DoubleAnimation.EasingFunction>
                                            <ExponentialEase EasingMode="EaseOut"
                                                             Exponent="5" />
                                        </DoubleAnimation.EasingFunction>
                                    </DoubleAnimation>
                                    <DoubleAnimation To="{ThemeResource ListViewItemContentTranslateX}"
                                                     Duration="0:0:0.175"
                                                     Storyboard.TargetName="ContentBorderTranslateTransform"
                                                     Storyboard.TargetProperty="X">
                                        <DoubleAnimation.EasingFunction>
                                            <ExponentialEase EasingMode="EaseOut"
                                                             Exponent="5" />
                                        </DoubleAnimation.EasingFunction>
                                    </DoubleAnimation>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="GridMultiSelect">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="SelectedBorder"
                                                     Storyboard.TargetProperty="Opacity"
                                                     Duration="0"
                                                     To="1" />
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="ReorderModeStates">
                            <VisualState x:Name="ReorderEnabled">
                                <Storyboard>
                                    <DropTargetItemThemeAnimation Storyboard.TargetName="OuterContainer" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Reorderable">
                                <Storyboard>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ContentScaleTransform"
                                                                   Storyboard.TargetProperty="ScaleX">
                                        <LinearDoubleKeyFrame KeyTime="00:00:00.075"
                                                              Value="1.05" />
                                        <LinearDoubleKeyFrame KeyTime="00:00:00.2"
                                                              Value="1.0" />
                                    </DoubleAnimationUsingKeyFrames>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ContentScaleTransform"
                                                                   Storyboard.TargetProperty="ScaleY">
                                        <LinearDoubleKeyFrame KeyTime="00:00:00.075"
                                                              Value="1.05" />
                                        <LinearDoubleKeyFrame KeyTime="00:00:00.2"
                                                              Value="1.0" />
                                    </DoubleAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="ReorderDisabled" />
                            <VisualStateGroup.Transitions>
                                <VisualTransition From="ReorderEnabled"
                                                  To="ReorderDisabled"
                                                  GeneratedDuration="00:00:00.2" />
                            </VisualStateGroup.Transitions>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="ReorderHintStates">
                            <VisualState x:Name="NoReorderHint" />
                            <VisualState x:Name="BottomReorderHint">
                                <Storyboard>
                                    <DragOverThemeAnimation Storyboard.TargetName="ReorderHintContent"
                                                            ToOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
                                                            Direction="Bottom" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="RightReorderHint">
                                <Storyboard>
                                    <DragOverThemeAnimation Storyboard.TargetName="ReorderHintContent"
                                                            ToOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
                                                            Direction="Right" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="TopReorderHint">
                                <Storyboard>
                                    <DragOverThemeAnimation Storyboard.TargetName="ReorderHintContent"
                                                            ToOffset="0"
                                                            Direction="Top" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="LeftReorderHint">
                                <Storyboard>
                                    <DragOverThemeAnimation Storyboard.TargetName="ReorderHintContent"
                                                            ToOffset="0"
                                                            Direction="Left" />
                                </Storyboard>
                            </VisualState>
                            <VisualStateGroup.Transitions>
                                <VisualTransition To="NoReorderHint"
                                                  GeneratedDuration="0:0:0.2" />
                            </VisualStateGroup.Transitions>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <Border.RenderTransform>
                        <ScaleTransform x:Name="ContentScaleTransform" />
                    </Border.RenderTransform>
                    <Grid x:Name="ReorderHintContent"
                          Background="Transparent">
                        <Border x:Name="CheckboxTiltContainer"
                                HorizontalAlignment="Left"
                                VerticalAlignment="Top"
                                Margin="{ThemeResource ListViewItemMultiselectCheckBoxMargin}">
                            <Border x:Name="CheckboxOuterContainer"
                                    Padding="{ThemeResource ListViewItemCheckBoxPadding}">
                                <Border.Clip>
                                    <RectangleGeometry Rect="0,0,44.5,44.5" />
                                </Border.Clip>
                                <Grid x:Name="CheckboxContainer"
                                      Opacity="0">
                                    <Grid.RenderTransform>
                                        <TranslateTransform x:Name="CheckboxContainerTranslateTransform"
                                                            X="{ThemeResource ListViewItemContentOffsetX}" />
                                    </Grid.RenderTransform>
                                    <Rectangle x:Name="NormalRectangle"
                                               Fill="{ThemeResource CheckBoxBackgroundThemeBrush}"
                                               Stroke="{ThemeResource CheckBoxBorderThemeBrush}"
                                               StrokeThickness="{ThemeResource CheckBoxBorderThemeThickness}"
                                               Height="25.5"
                                               Width="25.5" />
                                    <Path x:Name="CheckGlyph"
                                          IsHitTestVisible="False"
                                          Width="18.5"
                                          Height="17"
                                          Stretch="Fill"
                                          Opacity="0"
                                          HorizontalAlignment="Center"
                                          VerticalAlignment="Center"
                                          Fill="{ThemeResource CheckBoxForegroundThemeBrush}"
                                          Data="M0,123 L39,93 L124,164 L256,18 L295,49 L124,240 z"
                                          StrokeLineJoin="Round"
                                          StrokeThickness="2.5"
                                          FlowDirection="LeftToRight" />
                                </Grid>
                            </Border>
                        </Border>
                        <Border x:Name="ContentContainer">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>
                                <Border x:Name="TiltContainer"
                                        Grid.Column="1">
                                    <Border x:Name="ContentBorder"
                                            Background="{TemplateBinding Background}"
                                            BorderBrush="{TemplateBinding BorderBrush}"
                                            BorderThickness="{TemplateBinding BorderThickness}">
                                        <Border.RenderTransform>
                                            <TranslateTransform x:Name="ContentBorderTranslateTransform" />
                                        </Border.RenderTransform>
                                        <Grid>
                                            <ContentPresenter x:Name="contentPresenter"
                                                              ContentTransitions="{TemplateBinding ContentTransitions}"
                                                              ContentTemplate="{TemplateBinding ContentTemplate}"
                                                              Content="{TemplateBinding Content}"
                                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                                              Margin="{TemplateBinding Padding}" />
                                            <!-- The 'Xg' text simulates the amount of space one line of text will occupy.
                                            In the DataPlaceholder state, the Content is not loaded yet so we
                                            approximate the size of the item using placeholder text. -->
                                            <TextBlock x:Name="PlaceholderTextBlock"
                                                       Opacity="0"
                                                       Text="Xg"
                                                       Foreground="{x:Null}"
                                                       Margin="{TemplateBinding Padding}"
                                                       IsHitTestVisible="False"
                                                       AutomationProperties.AccessibilityView="Raw" />
                                            <Rectangle x:Name="PlaceholderRect"
                                                       Visibility="Collapsed"
                                                       Fill="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
                                                       IsHitTestVisible="False" />
                                        </Grid>
                                    </Border>
                                </Border>
                                <common:EdgeSelectButton x:Name="EdgeButton" />
                            </Grid>
                        </Border>
                        <Border x:Name="SelectedBorder"
                                IsHitTestVisible="False"
                                Opacity="0"
                                BorderBrush="{ThemeResource ListViewItemSelectedBackgroundThemeBrush}"
                                BorderThickness="{ThemeResource GridViewItemMultiselectBorderThickness}">
                            <Grid x:Name="SelectedCheckMark"
                                  Opacity="0"
                                  Height="34"
                                  Width="34"
                                  HorizontalAlignment="Right"
                                  VerticalAlignment="Top">
                                <Path x:Name="SelectedEarmark"
                                      Data="M0,0 L40,0 L40,40 z"
                                      Fill="{ThemeResource ListViewItemSelectedBackgroundThemeBrush}"
                                      Stretch="Fill" />
                                <Path x:Name="SelectedGlyph"
                                      Data="M0,123 L39,93 L124,164 L256,18 L295,49 L124,240 z"
                                      Fill="{ThemeResource ListViewItemCheckThemeBrush}"
                                      Height="14.5"
                                      Stretch="Fill"
                                      Width="17"
                                      HorizontalAlignment="Right"
                                      Margin="0,1,1,0"
                                      VerticalAlignment="Top"
                                      FlowDirection="LeftToRight" />
                            </Grid>
                        </Border>
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style TargetType="local:MultiSelectListView">
    <Setter Property="IsTabStop"
            Value="False" />
    <Setter Property="TabNavigation"
            Value="Once" />
    <Setter Property="IsSwipeEnabled"
            Value="True" />
    <Setter Property="HorizontalContentAlignment"
            Value="Stretch" />
    <Setter Property="VerticalContentAlignment"
            Value="Top" />
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility"
            Value="Disabled" />
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility"
            Value="Auto" />
    <Setter Property="ScrollViewer.HorizontalScrollMode"
            Value="Disabled" />
    <Setter Property="ScrollViewer.VerticalScrollMode"
            Value="Auto" />
    <Setter Property="ScrollViewer.ZoomMode"
            Value="Disabled" />
    <Setter Property="ScrollViewer.IsDeferredScrollingEnabled"
            Value="False" />
    <Setter Property="ScrollViewer.BringIntoViewOnFocusChange"
            Value="True" />
    <Setter Property="ItemContainerStyle"
            Value="{StaticResource MultiSelectListViewItemStyle}" />
    <Setter Property="ItemContainerTransitions">
        <Setter.Value>
            <TransitionCollection>
                <AddDeleteThemeTransition />
                <ReorderThemeTransition />
            </TransitionCollection>
        </Setter.Value>
    </Setter>
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <ItemsStackPanel Orientation="Vertical" />
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:MultiSelectListView">
                <Border BorderBrush="{TemplateBinding BorderBrush}"
                        Background="{TemplateBinding Background}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                    <ScrollViewer x:Name="ScrollViewer"
                                  TabNavigation="{TemplateBinding TabNavigation}"
                                  HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}"
                                  HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
                                  IsHorizontalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsHorizontalScrollChainingEnabled}"
                                  VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}"
                                  VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
                                  IsVerticalScrollChainingEnabled="{TemplateBinding ScrollViewer.IsVerticalScrollChainingEnabled}"
                                  IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}"
                                  IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}"
                                  ZoomMode="{TemplateBinding ScrollViewer.ZoomMode}"
                                  IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}"
                                  BringIntoViewOnFocusChange="{TemplateBinding ScrollViewer.BringIntoViewOnFocusChange}"
                                  AutomationProperties.AccessibilityView="Raw">
                        <ItemsPresenter Header="{TemplateBinding Header}"
                                        HeaderTemplate="{TemplateBinding HeaderTemplate}"
                                        HeaderTransitions="{TemplateBinding HeaderTransitions}"
                                        Footer="{TemplateBinding Footer}"
                                        FooterTemplate="{TemplateBinding FooterTemplate}"
                                        FooterTransitions="{TemplateBinding FooterTransitions}"
                                        Padding="{TemplateBinding Padding}"
                                        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                        VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                    </ScrollViewer>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Last edited Aug 28, 2014 at 7:36 PM by qdev, version 1