0

我的 ItemTemplate 中有一个带有一些 TextBlocks 的 ListBox。这个 TextBlocks 被定义为这个

<TextBlock Grid.Column="1" Grid.Row="0" Text="{BindingGasStationName}" 
    FontSize="20" FontFamily="Segoe WP SemiLight" Margin="0,0,0,0" Padding="0"
    MinHeight="27" TextTrimming="WordEllipsis"/>

省略号按预期工作。问题是,当用户选择一个项目时,文本(以及“...”)的颜色会变为当前系统突出显示的颜色。这就是我想要的。但是当用户更改选择时,“...”在文本再次变回白色期间保持突出显示颜色。

这是一个已知的错误还是我做错了什么?

更新
当用户再次选择带有无效彩色省略号的项目时,它会在再次设置突出显示颜色之前变白......

4

1 回答 1

1

我刚刚重现了我的错误,对我来说绝对是一个 WP 错误。

解决方法是手动ListBoxItem使用VisualStates. 我在这里提供了一个示例,说明如何ListBoxItem使用正确的强调色完全突出显示(包括省略号)。您设置 的ControlTemplateListBoxItem为 Unselected 与 Selected 状态指定前景色。希望这可以帮助!

<ListBox Name="TheListBox">
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="Foreground" Value="{StaticResource PhoneAccentBrush}"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListBoxItem">
                            <Border x:Name="LayoutRoot" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">
                                <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="CommonStates">
                                        <VisualState x:Name="Normal"/>
                                        <VisualState x:Name="MouseOver"/>

                                    </VisualStateGroup>
                                    <VisualStateGroup x:Name="SelectionStates">
                                        <VisualState x:Name="Unselected">
                                            <Storyboard>
                                                <ColorAnimation Duration="0" To="{StaticResource PhoneForegroundColor}" Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)" Storyboard.TargetName="ContentContainer" d:IsOptimized="True"/>
                                                <ColorAnimation Duration="0" To="{StaticResource PhoneForegroundColor}" Storyboard.TargetProperty="(Control.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="ContentContainer" d:IsOptimized="True"/>
                                            </Storyboard>
                                        </VisualState>
                                        <VisualState x:Name="Selected">
                                            <Storyboard>
                                                <ColorAnimation Duration="0" To="{TemplateBinding Foreground}" Storyboard.TargetProperty="(Control.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="ContentContainer" d:IsOptimized="True"/>
                                            </Storyboard>
                                        </VisualState>
                                        <VisualState x:Name="SelectedUnfocused">
                                            <Storyboard>
                                                <ColorAnimation Duration="0" To="{TemplateBinding Foreground}" Storyboard.TargetProperty="(Control.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="ContentContainer" d:IsOptimized="True"/>
                                            </Storyboard>
                                        </VisualState>
                                    </VisualStateGroup>
                                </VisualStateManager.VisualStateGroups>
                                <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="#FF1BA1E2" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Background="Black" BorderBrush="Black"/>
                            </Border>
                        </ControlTemplate>

                    </Setter.Value>
                </Setter>
            </Style>
        </ListBox.ItemContainerStyle>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding}" 
FontSize="20" FontFamily="Segoe WP SemiLight" Margin="0,0,0,0" Padding="0"
MinHeight="27" TextTrimming="WordEllipsis"/>

            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
于 2012-06-21T12:51:08.020 回答