2010-03-31 7 views
1

Je crée des colonnes DataGrid avec liaison (où i est une valeur Int):WPF: Comment obtenir Binding.Converter

dataGrid.Columns.Add(new DataGridTextColumn 
{ 
    Header = i.ToString(), 
    Binding = CreateBinding(i), 
}); 

private Binding CreateBinding(int num) 
{ 
    Binding bind = new Binding(string.Format("[{0}]", num));   
    bind.Converter = new CellValueConverter(); 
    return bind; 
} 

Dans la méthode CreateBinding J'ai un accès à la propriété bind.Converter.
Je dois appeler la méthode Converter.Convert() dans certains gestionnaire, mais il n'y a pas de propriété Converter lorsque je tente d'y accéder:

(dataGrid.Columns[clm] as DataGridTextColumn).Binding."no Converter property!" 

Comment puis-je obtenir mon CellValueConverter qui a été créé pour la colonne particulière?

Répondre

4

En effet, la propriété Binding sur DataGridBoundColumn (et DataGridTextColumn) retourne en fait une instance BindingBase, pas Binding. BindingBase ne prend pas en charge les convertisseurs.

Vous devriez être en mesure d'essayer de lancer:

var binding = (dataGrid.Columns[clm] as DataGridBoundColumn).Binding as Binding; 
if(binding != null) 
{ 
    IValueConverter converter = binding.Converter; // Will work here 
}