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