2013-03-12 88 views
4

我正在構建Windows 8商店應用程序,我無法設置更改ListView中TextBlock的突出顯示/選定顏色a。如何更改ListView中TextBlock中的選定文本顏色?

這裏是我如何創建我的ListView:

<ListView x:Name="zonesList" HorizontalAlignment="Left" Height="516" Margin="50,175,0,0" ItemTemplate="{StaticResource LocalizationCellSample}" VerticalAlignment="Top" Width="355" DataContext="{Binding}" SelectionChanged="zonesList_SelectionChanged"/> 

我的數據綁定:

<DataTemplate x:Key="LocalizationCellSample"> 
    <Grid HorizontalAlignment="Left"> 
    <TextBlock Style="{StaticResource ListBoxTextStyle}" TextWrapping="Wrap" Width="200" MaxHeight="20" VerticalAlignment="Center" Text="{Binding name}" HorizontalAlignment="Left" Margin="20,5,0,0" FontFamily="Global User Interface"/> 
    </Grid> 
</DataTemplate> 

什麼是最簡單的方法?

編輯:

這裏的ListBoxTextStyle

<Style x:Key="ListBoxTextStyle" TargetType="TextBlock"> 
    <Setter Property="FontFamily" Value="Segoe UI Light" /> 
    <Setter Property="FontSize" Value="16" /> 
</Style> 
+0

你可以發佈'ListBoxTextStyle'的樣式嗎? – 2013-03-12 14:01:53

+2

是否要更改TextBlock的TextColor或用於突出顯示所選項目的ListBox的顏色? – Jehof 2013-03-12 14:08:18

+0

@MichaelPerrenoud我在我的文章中添加了ListBoxTextStyle。 – 2013-03-12 14:22:56

回答

0

你可以通過在公共文件夾中添加以下內容到standardstyles.xaml文件嘗試:

<SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="#009ACD"></SolidColorBrush> 
     <SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="#CCC"></SolidColorBrush> 
     <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBackgroundThemeBrush" Color="#00688B"></SolidColorBrush> 
     <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBorderThemeBrush" Color="Black" Opacity="0"></SolidColorBrush> 

您的ResourceDictionary標籤內

所以它看起來像這樣:

<ResourceDictionary.ThemeDictionaries> 
    <ResourceDictionary x:Key="Default"> 

     <SolidColorBrush x:Key="ListViewItemSelectedBackgroundThemeBrush" Color="#009ACD"></SolidColorBrush> 
     <SolidColorBrush x:Key="ListViewItemPointerOverBackgroundThemeBrush" Color="#CCC"></SolidColorBrush> 
     <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBackgroundThemeBrush" Color="#00688B"></SolidColorBrush> 
     <SolidColorBrush x:Key="ListViewItemSelectedPointerOverBorderThemeBrush" Color="Black" Opacity="0"></SolidColorBrush> 


    </ResourceDictionary> 


</ResourceDictionary.ThemeDictionaries> 

這樣,當選擇他們等在你的列表視圖中的所有項目將得到一定的色差

+0

它適用於背景顏色單元格,謝謝。但是,我仍然無法設置在選中單元格時編輯選定的文本顏色。有任何想法嗎? ;) – 2013-03-12 15:58:38

+0

@AntoineGamond我不知道你的代碼exaclty,但也許你可以使用Color屬性,你綁定到你的文本框'Foreground =「{Binding $$$$}」',然後改變屬性的顏色,像var藍色=新的SolidColorBrush(Colors.RoyalBlue);當你需要它(當你選擇物品時)。我希望這有點清楚:) – Landvis 2013-03-12 16:16:29

+0

Offcourse你會把類似Colorproperty = Blue; – Landvis 2013-03-12 16:34:48

-1

添加下面的StandardStyles.xaml文件中提及的代碼,並改變你想要的顏色:

<SolidColorBrush x:Key="ListViewItemSelectedForegroundThemeBrush" Color="Red" /> 
+0

是的,它的工作正常。 – Mithila 2013-04-29 08:25:50

1

Add ItemContainerStyle to the ListView

添加ItemContainerStyle喜歡的圖片顯示在Visual Studio中 「DocumentOutline」 面板英寸然後編輯VisualState如下:

<VisualState x:Name="Selected"> 
    <Storyboard> 
     <ColorAnimation Duration="0" To="Red" Storyboard.TargetProperty="(ContentPresenter.Foreground).(SolidColorBrush.Color)" 
         Storyboard.TargetName="contentPresenter" /> 
    </Storyboard> 
</VisualState> 
<VisualState x:Name="SelectedUnfocused"> 
    <Storyboard> 
     <ColorAnimation Duration="0" To="Red" Storyboard.TargetProperty="(ContentPresenter.Foreground).(SolidColorBrush.Color)" 
         Storyboard.TargetName="contentPresenter" /> 
    </Storyboard> 
</VisualState> 

通常,"contentPresenter"默認添加到ItemContainerStyle"contentPresenter"Foreground更改後,文本的顏色將會更改。

至於所選ListViewItemBackground,與上述幾乎相同。

順便說一句,它至少在WP8.1工作。如果你在Blend這樣做,它會更容易。

相關問題