3

编辑: 我将十六进制值(字符串)转换为画笔,因此它没有采用我的颜色,如下所示:

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

在此处输入图像描述

我究竟如何摆脱酒吧中间/末端的透明褪色?

当我尝试向第二个偏移添加相同的颜色时,我得到全长条(100%)并且缩放再次无效。


我有以下带有 DateTemplate 的 ItemsControl,它表示一个简单的条形图:

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

问题实际上是显示我的图表控件条的颜色。

将显示以下内容: 渐变画笔

GradientBrush我使用 aRectangle代替之前创建条形图。我使用了 GradientBrush,所以我可以缩放我的条形图(Binding Value返回一个值在 1.0 和 0 之间的列表,因此它们被缩放了)。对于一个矩形,我被卡住了,无法根据返回的 1.0 - 0 值缩放我的条形图。

旧代码Rectangle

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

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

长方形


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

或者,如果这是不可能的,我该如何用矩形把它拉下来?如果有其他矩形解决方案,我可以再次实现。

最好的问候彼得P。

4

1 回答 1

1

彼得,

在矩形中,您使用数据的 Fill 属性绑定到矩形的 Fill 属性。它们都是Brush类型(或派生类型)

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

于 2012-05-01T17:30:04.663 回答