C# LinearGradientBrush颜色绑定(简单条形图项控件)

C# LinearGradientBrush颜色绑定(简单条形图项控件),c#,wpf,itemscontrol,lineargradientbrush,C#,Wpf,Itemscontrol,Lineargradientbrush,编辑: 我将十六进制值(字符串)转换为画笔,因此它没有采用我的颜色。下面的like成功地采用了我的颜色: (Color)ColorConverter.ConvertFromString(colorArray[0]) 剩下的唯一问题是缩放(使用颜色) 我的颜色条看起来是透明的(再一次),但现在每个条都有合适的颜色。此外,在我的程序启动时,所有6个栏都会显示(但它们不应该显示,因为它还没有值)。 代码: <Border Height="30" Margin="15" Grid.RowSpan

编辑: 我将十六进制值(字符串)转换为画笔,因此它没有采用我的颜色。下面的like成功地采用了我的颜色:

(Color)ColorConverter.ConvertFromString(colorArray[0])
剩下的唯一问题是缩放(使用颜色)

我的颜色条看起来是透明的(再一次),但现在每个条都有合适的颜色。此外,在我的程序启动时,所有6个栏都会显示(但它们不应该显示,因为它还没有值)。 代码:

<Border Height="30" Margin="15" Grid.RowSpan="6" >
                <Border.Background>
                    <LinearGradientBrush StartPoint="0.0,0" EndPoint="1.0,0">
                        <GradientStopCollection>
                            <GradientStop Offset="0.0" Color="{Binding FillBar, UpdateSourceTrigger=PropertyChanged}" />

                            <GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}" />

                        </GradientStopCollection>
                    </LinearGradientBrush>
                </Border.Background>
            </Border>

当我使用带有填充绑定的矩形时,我的图表看起来是这样的(应该是这样的): 填充
绑定
基本上返回一个包含十六进制值的列表,以获得这些颜色


如何使用上图中显示的颜色(保存颜色十六进制值的数组)填充
LinearGradientBrush
?颜色的顺序保持不变

或者,如果这不可能,我如何实际使用矩形将其拉出? 如果有其他矩形解决方案,我可以再次实现。

向彼得致意。

彼得

在矩形中,使用绑定到矩形填充属性的数据填充属性。它们都是笔刷类型(或派生类型)


在渐变停止的情况下,它需要一个颜色对象,而不是画笔,所以您可以创建另一个颜色类型的数据属性

彼得,我认为你大部分问题的根本原因是缺少绑定转换器。您不需要直接绑定值,但需要转换此值以满足您的演示需求。看看:你好,詹姆。也许,但也不确定如何用转换器解决这个问题。旁白:为什么你必须用相同的偏移量和颜色设置渐变停止点?嗨,jaime在我的帖子顶部做了一个编辑,最终接近解决方案,但有最后一个问题。抱歉,刚才注意到我旁白中有一个可怕的打字错误。我的意思是:为什么有两个相同偏移和颜色的渐变停止?
<ItemsControl x:Name="icGrafiek"  
            Margin="0,0,0,0" 
            ItemsSource="{Binding Source={StaticResource Grafiek}}"
            ItemTemplate="{DynamicResource GrafiekItemTemplate}" 
            RenderTransformOrigin="1,0.5" Grid.RowSpan="6" Grid.Column="1"/>

<DataTemplate x:Key="GrafiekItemTemplate">
            <Grid>
            <Border Height="30" Margin="15" Grid.RowSpan="6" >
                <Border.Background>

                    <LinearGradientBrush StartPoint="0.0,0" EndPoint="1.0,0">
                        <GradientStopCollection>
                            <GradientStop Offset="0.0" Color="#fff" />

                            <GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}" 
                                          Color="{Binding Fill, UpdateSourceTrigger=PropertyChanged}" />

                            <GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}" 
                                          Color="{Binding Fill, UpdateSourceTrigger=PropertyChanged}" />                                                          
                        </GradientStopCollection>
                    </LinearGradientBrush>                
                </Border.Background>
            </Border>
        </Grid>
    </DataTemplate>
 <DataTemplate x:Key="GrafiekItemTemplate">
            <Grid>
                <Rectangle StrokeThickness="0" Height="30"  
                           Margin="15" 
                           HorizontalAlignment="Left" 
                           VerticalAlignment="Stretch"
                           Width="{Binding Value, UpdateSourceTrigger=PropertyChanged}" 
                           Fill="{Binding Fill, UpdateSourceTrigger=PropertyChanged}">
                    <Rectangle.LayoutTransform>
                        <ScaleTransform ScaleX="20" />
                    </Rectangle.LayoutTransform>
                </Rectangle>
            </Grid>
    </DataTemplate>