2017-09-19 1 views
0

Ich habe ein ObservableCollection erweitert, hält die Datenpunkte sowie einige zusätzliche InformationenWPF-Chart-Toolkit. Bind Lieferanten-Gehalt in ColumnDataPoint zu Ansichtsmodell Datapoint Property

public class ExtendedCollection : ObservableCollection<KeyValuePair<string, KeyValuePair<string,int>>> 
{ 

} 

Dann hält Ich habe auch ein Ansichtsmodell der ColumnSeries, die diese verwendet ExtendedCollection

private ExtendedCollection columnValues = new ExtendedCollection(); 
public ExtendedCollection ColumnValues 
{ 
    get 
    { 
     return columnValues; 
    } 
    set 
    { 
     columnValues = value; 
     PropChanged("ColumnValues"); 
    } 
} 

Schließlich versuche ich, die Sammlungsgegenstände 'Value.Key auf einem Etikett anzuzeigen, das in jeder Datenpunktspalte

templated ist
<chartingToolkit:ColumnSeries Name="columnSeries" DependentValuePath="Value.Value" IndependentValuePath="Key" ItemsSource="{Binding ColumnValues}"> 
    <chartingToolkit:ColumnSeries.DataPointStyle> 
     <Style TargetType="chartingToolkit:ColumnDataPoint"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="chartingToolkit:ColumnDataPoint"> 
         <Grid> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="30" /> 
           <RowDefinition Height="*" /> 
          </Grid.RowDefinitions> 
          <Label Grid.Row="0" Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type chartingToolkit:ColumnSeries}},Path=DataContext.ColumnValues.Value.Key, Mode=TwoWay}"></Label> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </chartingToolkit:ColumnSeries.DataPointStyle> 
</chartingToolkit:ColumnSeries> 

Ich habe viele verschiedene Binding s für die Label 's Content versucht, aber keine funktioniert. Wie kann ich einen Link die Content zum Value.Key von ColumnDataPoint

Antwort

1

Die ExtendedCollection Eigenschaft hat keine Value Eigenschaft aber die DataContext der Säule hat:

<Label Grid.Row="0" Content="{Binding Value.Key}"></Label>