如何在列表框上为不同的彩色列表框项设置标准渐变?

时间:2012-08-23 20:19:45

标签: c# wpf listbox gradient listboxitem

我有一个包含不同颜色列表框项目的列表框,每个项目都包含文本。我想在每个上面从上到下应用一个标准的光线渐变图案。

通过将样式应用于包含GradientStops的列表框,我可以在C#中使用特定颜色执行此操作。但是,我不希望将单个颜色渐变应用于整个列表框。我正在寻找“开始X%比声明的颜色更轻,最终以声明的颜色”的方式。

我还考虑使用自己的颜色渐变为每个listboxitem单独设置样式,但无法找到实现此目的的方法。

列表框是在xaml中定义的,因此解决方案可以是xaml或C#。有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

我记得做过这样的事情......

  1. 背景明亮。
  2. 将基色绑定到两个停靠点。
  3. 通过converter更改Alpha通道,降低第一站的不透明度。
  4. 要将此类样式应用于每个单独的项目,请使用ItemContainerStyle

答案 1 :(得分:0)

这是你在找什么?

<ListBox.ItemTemplate>
            <DataTemplate>
                    <Border Margin="5,5,7,7" Background="WhiteSmoke" 
                            BorderBrush="#FF444444" BorderThickness="1" Padding="5">
                    <TextBlock Text="{Binding}" Width="150">
                      <TextBlock.Background>
                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                          <GradientStop Color="Yellow" Offset="0.0" />
                          <GradientStop Color="Red" Offset="0.25" />
                          <GradientStop Color="Blue" Offset="0.75" />
                          <GradientStop Color="LimeGreen" Offset="1.0" />
                        </LinearGradientBrush>
                      </TextBlock.Background>
                    </TextBlock>
                </Border>
            </DataTemplate>