0
<Window.Resources>
    <Style x:Key="ListBoxStyle" TargetType="{x:Type ListBox}">
        <Setter Property="Background" Value="{StaticResource ResourceKey=ListboxBack}"/>
        <Setter Property="Foreground" Value="Green"/>
        <Setter Property="Width" Value="284"/>
        <Setter Property="Height" Value="332"/>
        <Setter Property="Margin" Value="18,77,0,151"/>
        <Setter Property="ItemTemplate" Value="{DynamicResource DataTemplate1}"/>
        <Setter Property="HorizontalAlignment" Value="Left"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Padding" Value="0,0,0,0"/>
</Style>

    <DataTemplate x:Key="DataTemplate1">
        <Grid Width="276" Height="36" Background="{x:Null}" Opacity="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.069*"/>
                <ColumnDefinition Width="0.931*"/>
            </Grid.ColumnDefinitions>
            <TextBlock x:Name="recback" Padding="40,0,0,0" Text="{Binding [0], FallbackValue=Number}" Width="Auto" HorizontalAlignment="Stretch" Margin="-1.899,0,-5.334,0" Grid.Column="0" FontSize="13.333" Height="38.277" VerticalAlignment="Top" Foreground="Black" Background="{x:Null}" Opacity="1" Grid.ColumnSpan="2" />
            <Rectangle HorizontalAlignment="Stretch" Height="1" Margin="3.5,0" VerticalAlignment="Bottom" Width="Auto" Fill="White" Grid.ColumnSpan="2"/>
        </Grid>
    </DataTemplate>
</Window.Resources>

<ListBox Style="{StaticResource ResourceKey=ListBoxStyle}" BorderThickness="0" x:Name="listBox1" Foreground="White" FontSize="18" d:LayoutOverrides="VerticalAlignment" BorderBrush="{x:Null}" />

ListBoxDataTemplate. DataTemplate包含 aRectangle和 a Textblock。当我选择项目时,ListBox我想更改TextBlock前景和Rectangle背景。你可以帮帮我吗?

4

1 回答 1

0

使用类似于以下的方法。这样,您将x:Key使用此 ListBox Only 的指定使用覆盖默认画笔。也许您需要额外或不同x:Key的 s 来覆盖

<ListBox>
    <ListBox.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightBlue" />
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Green" />
    </ListBox.Resources>
</ListBox>

通过再次阅读您的问题,我了解到您的 DataTemplate 中可能还需要 DataTriggers。您也可以尝试类似这样的方法。注意 Forground 和 BackGround 应该设置为不在 TextBlock 中的样式,这样代码才能正常工作:

  <TextBlock x:Name="recback" Padding="40,0,0,0" Text="{Binding [0], FallbackValue=Number}" Width="Auto" 
             HorizontalAlignment="Stretch" Margin="-1.899,0,-5.334,0" Grid.Column="0" FontSize="13.333" Height="38.277"
             VerticalAlignment="Top" Opacity="1" Grid.ColumnSpan="2">
      <TextBlock.Style>
          <Style TargetType="{x:Type TextBlock}">
              <Setter Property="Foreground" Value="Black"/>
              <Setter Property="Background" Value="{x:Null}"/>
              <Style.Triggers>
                  <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">
                      <Setter Property="Foreground" Value="Red"/>
                      <Setter Property="Background" Value="Yellow"/>
                  </DataTrigger>
              </Style.Triggers>
          </Style>
      </TextBlock.Style>
  </TextBlock>
于 2013-02-04T13:45:25.677 回答