Listview имеет множественный выбор, даже установив режим выбора один?

У меня есть представление списка, но мой listview имеет множественный выбор, даже если режим выбора один?Я опубликовал свойства, заданные в listview и itemcontainerstyle.

     <ListView SelectionMode="Single" Tapped="UIElementTapped"
                    ItemsSource="{Binding Path=ListTimeFrame}"
                    SelectedItem="{Binding Path=SelectedTimeFrame, Mode=TwoWay}"
                    ItemContainerStyle="{StaticResource TimeFrameListViewItemContainerStyle}"
                    Padding="0"
                    Margin="0">

и itemcontainer стиль следующим образом

<Style x_Key="TimeFrameListViewItemContainerStyle" TargetType="ListViewItem">
    <Setter Property="Padding" Value="4,1" />
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListViewItem">
                <Border x_Name="Bd" BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"
                       >
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x_Name="SelectionStates">
                            <VisualState x_Name="Unselected" />
                            <VisualState x_Name="Selected">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="SelectingGlyph"
                                            Storyboard.TargetProperty="Opacity" Duration="0" To="1" />
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="contentPresenter"
                                            Storyboard.TargetProperty="Foreground">
                                        <DiscreteObjectKeyFrame KeyTime="0"
                                                Value="{StaticResource DefaultTextBlueColor}" />
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x_Name="SelectedUnfocused" />
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <Grid Margin="{TemplateBinding Padding}">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="&#xE10B;" FontFamily="Segoe UI Symbol"
                                Foreground="{StaticResource DefaultTextBlueColor}" x_Name="SelectingGlyph"
                                Opacity="0" FontSize="20" LineStackingStrategy="BlockLineHeight" />
                        <ContentPresenter x_Name="contentPresenter" Grid.Column="1"
                                ContentTransitions="{TemplateBinding ContentTransitions}"
                                ContentTemplate="{TemplateBinding ContentTemplate}"
                                Content="{TemplateBinding Content}"
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

1 ответ

  1. Listview имеет множественный выбор даже режим выбора установки одиночный

    Это потому, что вам не хватает Nomalвизуального состояния. Вы задаете выбранное визуальное состояние в стиле Listviewitem, но не даете Nomalсостояние. Невыбранное состояние в ListViewItem-это Nomalсостояние. Добавьте следующее визуальное состояние в SelectionStatesгруппу визуальных состояний.

    <VisualState x_Name="Normal">
        <Storyboard>
            <PointerUpThemeAnimation Storyboard.TargetName="contentPresenter" />
        </Storyboard>
    </VisualState>
    

    Весь визуальный код состояния выглядит так:

     <VisualStateManager.VisualStateGroups>
         <VisualStateGroup x_Name="SelectionStates">
             <VisualState x_Name="Normal">
                 <Storyboard>
                     <PointerUpThemeAnimation Storyboard.TargetName="contentPresenter" />
                 </Storyboard>
             </VisualState>        
             <VisualState x_Name="Selected">
                 <Storyboard>
                     <DoubleAnimation Duration="0"
                                      Storyboard.TargetName="SelectingGlyph"
                                      Storyboard.TargetProperty="Opacity"
                                      To="1" />
                     <ObjectAnimationUsingKeyFrames Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="Foreground">
                         <DiscreteObjectKeyFrame KeyTime="0" Value="Blue" />
                     </ObjectAnimationUsingKeyFrames>
                 </Storyboard>
             </VisualState>
             <VisualState x_Name="SelectedUnfocused" />
         </VisualStateGroup>
     </VisualStateManager.VisualStateGroups>