0

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

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

我还考虑过使用自己的颜色渐变单独设置每个列表框项的样式,但无法找到一种方法来做到这一点。

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

谢谢。

4

2 回答 2

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>
于 2012-08-23T21:56:19.487 回答
0

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

  1. 拥有明亮的背景。
  2. 将基色绑定到两个站点。
  3. 通过转换器更改 Alpha 通道来降低第一站的不透明度。

要将这种样式应用于每个单独的项目,请使用ItemContainerStyle.

于 2012-08-23T20:22:49.633 回答