【问题标题】:How can I set a standard gradient on a listbox for different colored listboxitems?如何在列表框上为不同颜色的列表框设置标准渐变?
【发布时间】:2012-08-23 20:19:45
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: c# wpf listbox gradient listboxitem


    【解决方案1】:

    我记得...

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

    要将此类样式应用于每个单独的项目,请使用ItemContainerStyle

    【讨论】:

    • 好的,我将对此进行探索并报告。
    【解决方案2】:

    这是你要找的吗?

    <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>
    

    【讨论】:

    • 不,“多色”列表框项可能是错误的放置方式。假设我有单独的红色、黄色和蓝色列表框项。我想要一个从上到下的渐变,从浅到深,应用于每个。
    猜你喜欢
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2022-07-15
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多