2013-03-12 2 views
4

Я создаю приложение для хранения Windows 8, и я не могу изменить выделенный/выделенный цвет a TextBlock в ListView.Как изменить выделенный цвет текста в TextBlock в ListView?

Вот как я создаю мой 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> 

Что это самый простой способ?

EDIT:

Вот ListBoxTextStyle

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

Можете ли вы опубликовать стиль для 'ListBoxTextStyle'? –

+2

Вы хотите изменить TextColor TextBlock или цвет ListBox для выделения выделенного элемента? – Jehof

+0

@MichaelPerrenoud Я добавил ListBoxTextStyle в свой пост. –

ответ

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> 

Таким образом, все элементы в вашей ListView будет получить определенный цвет, когда они выбраны и т.д.

+0

Он работает для цветной ячейки фона, спасибо. Однако, когда ячейка выбрана, мне по-прежнему не удается изменить выбранный цвет текста. Есть идеи? ;) –

+0

@AntoineGamond Я не знаю вашего кода exaclty, но, возможно, вы можете использовать свойство Color, которое вы связываете с вашим текстовым полем Foreground = "{Binding $$$$}" ', а затем измените цвет свойства с чем-то вроде var Синий = новый SolidColorBrush (Colors.RoyalBlue); когда вам это нужно (в вашем случае, когда элемент выбран).Я надеюсь, что это немного ясно :) – Landvis

+0

Выключить вы бы поставили что-то вроде Colorproperty = Blue; – Landvis

-1

Добавить нижеуказанным код в файле StandardStyles.xaml и изменить цвет вы хотите:

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

да и его рабочий тон. – Mithila

1

Add ItemContainerStyle to the ListView

Добавить ItemContainerStyle как показано на рисунке в панели "DocumentOutline" в Visual Studio. Затем Отредактируйте 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 по умолчанию. Изменяется Foreground из "contentPresenter", цвет текста изменится.

Что касается Background выбранных ListViewItem, почти таких же, как указано выше.

Кстати, он работает в WP8.1, по крайней мере. И если вы сделаете это в Blend, это будет проще.

Смежные вопросы