2017-01-06 36 views
0

我們有一個圖表控件,它並排顯示條形圖。它基於ArguementDataMember「x」和ValueDataMember「y」。圖表與具有屬性x,y,z的數據源(chartData,observablecollection)綁定。 我試圖在系列標籤中顯示「z」。但不能。收到錯誤圖表中的自定義系列標籤WPF

"BindingExpression path error: 'z' property not found on 'object' ''SeriesLabelItem' (HashCode=58379838)'. BindingExpression:Path=z; DataItem='SeriesLabelItem' (HashCode=58379838); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')" 

我的代碼是像下面

<dxc:BarSideBySideSeries2D DisplayName="Last Year" Brush="Goldenrod" ArgumentScaleType="Qualitative" ArgumentDataMember="x" 
                ValueDataMember="y" ToolTipEnabled="False" Name="Last" DataSource="{Binding ChartData}"> 

          <dxc:BarSideBySideSeries2D.Label > 
           <dxc:SeriesLabel Visible="True" VerticalAlignment="Center" Name="lblLast" DataContext="{Binding ChartData}"> 
            <dxc:SeriesLabel.ElementTemplate> 
             <DataTemplate> 
              <TextBlock Text="{Binding z}" Foreground="Black" FontSize="10" FontWeight="Bold" Background="White"> 
              </TextBlock> 
             </DataTemplate> 
            </dxc:SeriesLabel.ElementTemplate> 
           </dxc:SeriesLabel> 

          </dxc:BarSideBySideSeries2D.Label> 
          <dxc:BarSideBySideSeries2D.Model> 
           <dxc:SimpleBar2DModel/> 
          </dxc:BarSideBySideSeries2D.Model> 
         </dxc:BarSideBySideSeries2D> 

回答

0

元素模板瞭解元素的數據上下文無關,要應用模板,該模板。內部模板只能綁定到SeriesLabelItem的屬性。要爲標籤提供自定義文本,您可以使用CustomDrawSeriesPoint事件。的實現方法是這樣的:

private void chartControl_CustomDrawSeriesPoint(object sender, CustomDrawSeriesPointEventArgs e) 
     { 
      MyClass point = e.SeriesPoint.Tag as MyClass; 
      if (point != null) 
      { 
       e.LabelText = point.z; 
      } 
     } 

模板將是這樣的:

<DataTemplate> 
    <TextBlock Text="{Binding Text}" Foreground="Black" FontSize="10" FontWeight="Bold" Background="White"> 
    </TextBlock> 
</DataTemplate>