5

我正在构建一个 Windows 8 商店应用程序,但无法更改 ListView 中 TextBlock 的突出显示/选定颜色 a。

这是我创建 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>
4

3 回答 3

1

将 ItemContainerStyle 添加到 ListView

在 Visual Studio 的“DocumentOutline”面板中添加ItemContainerStyle如图所示的内容。然后编辑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,它会更容易。

于 2015-11-10T10:48:04.657 回答
0

您可以尝试将其添加到 Common 文件夹中的 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.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>

这样,列表视图中的所有项目在被选中时都会获得某种颜色等

于 2013-03-12T15:44:55.840 回答
-1

在您的 StandardStyles.xaml 文件中添加下面提到的代码并更改您想要的颜色:

   <SolidColorBrush x:Key="ListViewItemSelectedForegroundThemeBrush" Color="Red" /> 
于 2013-04-26T09:26:13.797 回答