2012-04-30 20 views
3

编辑: 我,我转换为Brush,因此它没有考虑我的颜色像下面的十六进制值(字符串)把我的色彩成功地:一个LinearGradientBrush颜色绑定(简单条形图的ItemsControl)

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

enter image description here

究竟我要如何摆脱透明色在栏的中间/结束的衰落?

当我尝试将相同颜色的第二偏移我得到全长杆(100%)和缩放再次无效。


我有以下的ItemsControl与代表一个简单的条形图DateTemplate:

<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

GradientBrush以前我用一个Rectangle而不是创造吧。我用了GradientBrush,所以我可以规模我吧(在Binding价值返回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基本收益用十六进制值来获得这些颜色的列表。

Rectangle


我如何填满LinearGradientBrush与颜色显示在上面的图片(阵列保持的颜色的十六进制值)?颜色的顺序保持不变。

或者,如果这是不可能的实际上,我怎么用矩形把它关闭? 如果还有其他方案与矩形我可以再次实施。

问候PeterP。

+0

PeterP,我想你的大部分问题的根本原因是缺乏约束力转换器。您不需要直接绑定值,而是将此值转换为适合您的演示需求。看一看:http://www.switchonthecode.com/tutorials/wpf-tutorial-binding-converters – 2012-05-01 14:47:12

+0

您好海梅。也许但不确定如何用转换器来解决这个问题。 – PeterP

回答

1

彼得,

在矩形你使用数据的填写绑定到矩形的填充财产一样。两者都是类型刷(或派生类型)

在渐变停止的情况下,它期待一个颜色对象,而不是刷,以便可以创建类型颜色的另一种数据属性。

+1

侧面问题:为什么您必须使用相同的偏移和颜色进行渐变停止? – 2012-05-01 17:31:01

+0

喜海梅发在我的岗位之上的编辑,越来越终于接近了一个解决方案,但作为最后一个问题。 – PeterP

+1

对不起,刚才注意到我旁边的一个可怕的错字问题。我的意思是:为什么你有两个相同的偏移和颜色的渐变停止? – 2012-05-02 06:50:03