2013-02-19 161 views
1

我是WPF的新手,当然我遇到了Bindings的一些问题。绑定问题WPF

我已经初始化了RadCartesianChart,我希望显示来自不同类型的类别列表的数据。对于每个列表,我需要不同的颜色,但是我无法将代码填充属性绑定到代码后面的Color属性中。

这是我的XAML如何看起来像:

<telerik:RadCartesianChart Name="RevChart"> 
     <telerik:RadCartesianChart.Grid> 
      <telerik:CartesianChartGrid MajorYLineDashArray="5, 5" MajorLinesVisibility="Y"> 
       <telerik:CartesianChartGrid.MajorYLineStyle> 
        <Style TargetType="{x:Type Line}"> 
         <Setter Property="Stroke" Value="Gray"/> 
        </Style> 
       </telerik:CartesianChartGrid.MajorYLineStyle> 
      </telerik:CartesianChartGrid> 
     </telerik:RadCartesianChart.Grid> 
     <telerik:RadCartesianChart.HorizontalAxis> 
      <telerik:CategoricalAxis /> 
     </telerik:RadCartesianChart.HorizontalAxis> 
     <telerik:RadCartesianChart.VerticalAxis> 
      <telerik:LinearAxis/> 
     </telerik:RadCartesianChart.VerticalAxis> 

     <telerik:AreaSeries CategoryBinding="Date" ValueBinding="Rev" Fill="{Binding Color}"> 

     </telerik:AreaSeries> 

    </telerik:RadCartesianChart> 

这是我的C#代码:

public class Revenue 
{ 
    public double Rev { get; set; } 
    public DateTime Date { get; set; } 
    public Color Color { get; set; } 
} 

List<Revenue> list = new List<Revenue>(); 
... 
... 
this.RevChart.Series[0].ItemsSource = list; 

作为一个结果我得到正确的画面,但颜色是默认的。所以我的颜色绑定不起作用。这条线Fill={Binding Color}有问题吗?为什么?

回答

0

它是因为FillBrush而您试图指定Color,这不会起作用。

您必须将Color分配给Fill属性中SolidColorBrushColor属性。

<telerik:AreaSeries CategoryBinding="Date" ValueBinding="Rev"> 
    <telerik:AreaSeries.Fill> 
     <SolidColorBrush Color="{Binding Color}" /> 
    </telerik:AreaSeries.Fill> 
</telerik:AreaSeries> 
+0

谢谢您的回答!完全有意义,但不幸的是,只要我添加' ....'它不会显示任何东西只是空的图表。 – 2013-02-20 00:22:00

+0

我想你必须检查'telerik'文档,看看他们是否允许这个,看起来很奇怪他们不会这样做,否则你将不得不做一个'Converter'或者把'Color'变成'Brush' – 2013-02-20 00:30:23