2017-09-19 6 views
0

J'ai une étendue ObservableCollection qui contient les points de données ainsi que des informations supplémentairesBoîte à outils de graphique WPF. Le contenu de Bind Étiquette en ColumnDataPoint à ViewModel DataPoint Propriété

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

} 

J'ai aussi un ViewModel tenant le ColumnSeries qui utilise cette ExtendedCollection

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

Enfin, j'essaie d'afficher les éléments de la collection 'Value.Key sur une étiquette modèle dans la colonne de chaque point de données

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

J'ai essayé beaucoup de différents Binding s pour le LabelContent mais aucun ne fonctionne. Comment puis-je relier le Content au Value.Key de ColumnDataPoint

Répondre

1

La propriété ExtendedCollection n'a pas de propriété Value mais le DataContext de la colonne a:

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