【问题标题】:Listboxitem stop showing highlited on select in Windows phone 8Listboxitem 停止在 Windows phone 8 中选择突出显示
【发布时间】:2014-05-06 11:17:21
【问题描述】:

我正在使用列表框在 windows phone 8 中显示我的数据。我添加了一些逻辑来启用/禁用单击列表框项。它现在工作正常,但我不知道如何改变列表框的点击颜色现在停止工作,任何人都可以帮助我摆脱这种情况。 这是我的代码

<ListBox Name="lstCourses" 
                     ItemsSource="{StaticResource ListOfCourse}"
                     toolkit:TiltEffect.IsTiltEnabled="True"
                     SelectionChanged="lstCourses_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="ListBoxItem">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="ListBoxItem">
                                        <ContentPresenter IsHitTestVisible="{Binding IsEnabled}"/>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ListBox.ItemContainerStyle>

                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                </Grid.RowDefinitions>

                                <TextBlock TextWrapping="Wrap" 
                                           Grid.Row="0"
                                           FontFamily="Segoe WP SemiLight"
                                           FontSize="25"
                                           Text="{Binding CourseName}"/>

                                <Grid Grid.Row="1">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="*"/>
                                        <ColumnDefinition Width="3*"/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock TextWrapping="Wrap" 
                                               Grid.Column="0"
                                               FontFamily="Segoe WP SemiLight"
                                               FontSize="20"
                                               Foreground="{StaticResource PhoneSubtleBrush}"
                                               Text="Instructor: "/>
                                    <TextBlock TextWrapping="Wrap" 
                                               Grid.Column="1"
                                               FontFamily="Segoe WP SemiLight"
                                               FontSize="20"
                                               Text="{Binding CourseInstructor, Converter={StaticResource InstructorConvertor}}"
                                               Foreground="{StaticResource PhoneSubtleBrush}"/>
                                </Grid>
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
            </ListBox>

【问题讨论】:

    标签: xaml windows-phone-8 listbox windows-phone


    【解决方案1】:

    发生这种情况是因为您覆盖了默认的 ItemContainerStyle,它为 null 并为 ListBoxItem 设置了新样式,而没有用于选定/未选定视觉状态的情节提要。

    看看default styles。阅读完文章后,您应该做的事情就很简单了。

    编辑

    这是一个例子。

    <ListBox 
        Name="lstCourses" 
        ItemsSource="{StaticResource ListOfCourse}"
        toolkit:TiltEffect.IsTiltEnabled="True"
        SelectionChanged="lstCourses_SelectionChanged">
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListBoxItem">
                            <Grid 
                                IsHitTestVisible="{Binding IsEnabled}">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="Auto"/>
                                </Grid.RowDefinitions>
    
                                <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="SelectionState">
                                        <VisualState x:Name="Unselected" />
                                        <VisualState x:Name="Selected">
                                            <Storyboard>
                                                <ObjectAnimationUsingKeyFrames
                                                    Storyboard.TargetName="textbox1"
                                                    Storyboard.TargetProperty="Foreground">
                                                    <DiscreteObjectKeyFrame 
                                                        KeyTime="0:0:0" Value="{StaticResource PhoneAccentBrush}"/>
                                                </ObjectAnimationUsingKeyFrames>
                                                <ObjectAnimationUsingKeyFrames
                                                    Storyboard.TargetName="textbox2"
                                                    Storyboard.TargetProperty="Foreground">
                                                    <DiscreteObjectKeyFrame 
                                                        KeyTime="0:0:0" Value="{StaticResource PhoneAccentBrush}"/>
                                                </ObjectAnimationUsingKeyFrames>
                                                <ObjectAnimationUsingKeyFrames
                                                    Storyboard.TargetName="textbox3"
                                                    Storyboard.TargetProperty="Foreground">
                                                    <DiscreteObjectKeyFrame 
                                                        KeyTime="0:0:0" Value="{StaticResource PhoneAccentBrush}"/>
                                                </ObjectAnimationUsingKeyFrames>
                                            </Storyboard>
                                        </VisualState>
                                    </VisualStateGroup>
                                </VisualStateManager.VisualStateGroups>
    
    
                                <TextBlock 
                                    x:Name="textbox1"
                                    TextWrapping="Wrap" 
                                    Grid.Row="0"
                                    FontFamily="Segoe WP SemiLight"
                                    FontSize="25"
                                    Text="{Binding CourseName}"
                                    />
                                <Grid Grid.Row="1">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="*"/>
                                        <ColumnDefinition Width="3*"/>
                                    </Grid.ColumnDefinitions>
                                    <TextBlock 
                                        x:Name="textbox2"
                                        TextWrapping="Wrap" 
                                        Grid.Column="0"
                                        FontFamily="Segoe WP SemiLight"
                                        FontSize="20"
                                        Foreground="{StaticResource PhoneSubtleBrush}"
                                        Text="Instructor: "
                                        />
                                    <TextBlock 
                                        x:Name="textbox3"
                                        TextWrapping="Wrap" 
                                        Grid.Column="1"
                                        FontFamily="Segoe WP SemiLight"
                                        FontSize="20"
                                        Text="{Binding CourseInstructor, Converter={StaticResource InstructorConvertor}}"
                                        Foreground="{StaticResource PhoneSubtleBrush}"
                                        />
                                </Grid>
                            </Grid>                            
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>
    

    【讨论】:

    • 感谢您的回复。你能再给我一些想法吗,我到底要做什么?
    【解决方案2】:

    另外,如果您通过代码进行操作,您可以在 ListBox 的 Selection_changed 事件处理程序中设置“YourListBox.SelectedItem.Background”属性。

    如果您正在使用样式,则只需相应地更新 Selected / Unselected Visual States。

    【讨论】:

      猜你喜欢
      • 2011-05-31
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 2012-06-24
      • 2011-01-10
      • 2011-04-19
      相关资源
      最近更新 更多