当用户在另一个列表视图中选择另一个项时丢失所选值
本文关键字:另一个 选择 用户 列表 视图 | 更新日期: 2023-09-27 18:27:39
我有两个绑定到两个不同属性的ListView
。基本上,这是两个选择器(一个用于分钟,另一个用于小时(。
ItemSource
绑定到静态List<int>
,SelectedValue
绑定到模型中的属性。
当我从小时列表中选择一个值时,它会保持其所选状态...但是当我从分钟列表中选择第二个值时,它会丢失它,反之亦然。
我相信这是一个图形问题,因为即使未选择一个值,也会保留两个值。
列表视图调用:
<ListView x:Name="listViewHoursSelect" ItemsSource="{Binding MaxHoursList}" SelectedValue="{Binding SelectedMaxHours}" FontSize="{DynamicResource FontText}" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="{DynamicResource MainGray}" Style="{DynamicResource TimeSelectListView}" ItemsPanel="{DynamicResource TimeSelectItemsPanelTemplate}" Margin="0" ItemContainerStyle="{DynamicResource ListViewItemStyle1}" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
项目容器样式:
<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<StackPanel x:Name="stackPanel">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.2"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="textBlock">
<EasingDoubleKeyFrame KeyTime="0" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground)" Storyboard.TargetName="textBlock">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource MainRed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground)" Storyboard.TargetName="textBlock">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource LightGray}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Unselected"/>
<VisualState x:Name="Selected">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground)" Storyboard.TargetName="textBlock">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource MainRed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Focused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground)" Storyboard.TargetName="textBlock">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource MainRed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="SelectedUnfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<TextBlock x:Name="textBlock" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding DataContext, RelativeSource={RelativeSource TemplatedParent}}" Background="{x:Null}" Foreground="{DynamicResource MainGray}"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我重新设计了很多ListView
,甚至设置了所有状态(正常、鼠标悬停、选定等(。 我很难找到为什么它会保留所选值,直到我在另一个列表中选择另一个值。
如果您需要一些代码,请告诉我,我还没有发布任何内容,因为它很多。
解决了,我忘了设置选择未聚焦状态:)
<VisualState x:Name="SelectedUnfocused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground)" Storyboard.TargetName="textBlock">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource MainRed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>