2012-06-21 31 views
0

我在ItemTemplate中有一個ListBox和一些TextBlocks。 此的TextBlocks被定義爲這一個列表框:TextBlock的「省略號」在選擇後顏色有誤

<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"/> 

省略號工作正常。 問題是,當用戶選擇一個項目時,文本的顏色(以及「...」)變爲當前系統高亮顏色。這是我想要的。 但是,當用戶改變選擇時,「...」在文本再次變成白色時保持高亮顏色。

這是一個已知的錯誤還是我做錯了什麼?

更新
當用戶重新設置高亮顏色前,再次選擇與無效有色省略號的項目,它越來越白了一會兒......

回答

1

我只是轉載的錯誤在我的最後,絕對看起來像一個WP bug給我。

解決方法是使用VisualStates手動執行ListBoxItem樣式。我在這裏列舉了一個例子,您可以如何設計ListBoxItem以使用正確的重音顏色來完全突出顯示(包括省略號)。您設置ListBoxItemControlTemplate並指定未選擇狀態與選定狀態的前景顏色。希望這可以幫助!

<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> 
+1

謝謝你的代碼!因爲在初始加載時省略號總是處於重音顏色,所以我改變了一些細節:1)刪除行[] 2)使用[To = {TemplateBinding Foreground}「]在」未選定「部分3)在」選定「部分使用[To =」{StaticResource PhoneAccentColor}「]。 –

+0

順便說一句我已經嘗試過以前幾乎相同,但代碼depennding在這篇文章:http://windowsphonegeek.com/tips/how-to-customize-the-listpicker-selected-item它不起作用...也許是問題在於本文使用[Storyboard] [ObjectAnimationUsingKeyFrames]作爲默認實現= =) –