2013-08-12 1 views
1

Je recherche un moyen d'obtenir une colonne d'une collection à l'intérieur d'une collection qui est la source de ma grille.Obtention d'un champ d'une collection dans une colonne

Comme ceci:

<dxg:GridControl Grid.Row="0" Grid.Column="0" ItemsSource="{tools:ValidationBinding Model.Costs}"> 
<dxg:GridControl.Columns> 
<dxg:GridColumn FieldName="Costs.Description" Header="Description" /> 
<dxg:GridColumn FieldName="Costs.CurrencyAbbrevation" /> 
</dxg:GridControl.Columns> 

Ma source de ma grille est Model.Costs et cette collection a une autre collection coûts. J'ai besoin du champ Description de cette collection. Des idées?

Vue d'ensemble:

Ceci est la source de la grille:

public virtual ObservableCollection<ShipmentLineCost> Costs { get; set; } 

Il contient également un ObservableCollection:

public virtual ObservableCollection<SettlementCost> Costs { get; set; } 

Et je veux la valeur Description de lui dans ma grille:

public string Description { get { return (Product == null) ? "" : Product.Description + ";" + SettlementUnit.Description + ";" + CurrencyAbbreviation; } } – 

Salue

+0

Utilisez-vous MVVM ici? Si oui, l'ItemSource est lié à un Viewmodel, il devrait être simple d'accéder aux données requises via le ViewModel ... – MoonKnight

+0

Oui, j'utilise MVVM, je n'arrive pas à atteindre le champ de description des coûts de collecte dans les coûts de la collection . Pas d'erreurs, mais aussi pas de sortie. –

+1

Comment voulez-vous que quelqu'un réponde quand vous ne nous avez même pas montré à quoi ressemblent vos structures de données? – Sheridan

Répondre

0

Pour obtenir le DataContext vous avez besoin, vous devrez remonter l'arbre visuel et utiliser aussi un DataTemplate comme suit

<DataGridTextColumn Binding="{Binding Description}"> 
    <DataGridTextColumn.HeaderTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Description, 
           RelativeSource={RelativeSource AncestorType=DataGrid}}"/> 
     </DataTemplate> 
    </DataGridTextColumn.HeaderTemplate> 
</DataGridTextColumn> 

Faire cela directement sur la propriété Header ne fonctionnera pas parce qu'il ne peut pas être résolu sur place car la colonne est un objet abstrait n'apparaissant pas dans l'arbre.

+0

Je vais essayer cela maintenant, vous fera savoir si cela fonctionne –

+0

Ur construire un headertemplate, en utilisant une propriété Description. Mais ce n'est pas vraiment ce dont j'ai besoin. J'ai besoin d'obtenir ma description de la collection Coûts à l'intérieur de la grille, qui a la collection de coûts source d'une autre classe. –

Questions connexes