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とが含まれてRectangleTextblockます。アイテムを選択すると、フォアグラウンドとバックグラウンドListBoxを変更したい。私たちを手伝ってくれますか?TextBlockRectangle

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 に答える