2010-07-19 4 views
3

J'ai reçu une application WPF MVVM contenant un ListView contenant un GridView.
En utilisant une classe d'aide, je crée le GridViewColumn, qui fonctionne bien.Lier par programme la propriété à GridViewColumn.Width

Mon problème: Je veux lier deux fois la largeur pour que je puisse relire les changements de largeur.

Le code pour créer le GridViewColumn droit ressemble maintenant à ceci:

private static GridViewColumn CreateColumn(GridView gridView, object columnSource) 
{ 
    GridViewColumn column = new GridViewColumn(); 
    String headerTextMember = GetHeaderTextMember(gridView); 
    String displayMemberMember = GetDisplayMemberMember(gridView); 
    String widthMember = GetWidthMember(gridView); 
    // set header 
    column.Header = GetPropertyValue(columnSource, headerTextMember); 

    // set display binding 
    String propertyName = GetPropertyValue(columnSource, displayMemberMember) as String; 
    column.DisplayMemberBinding = new Binding(propertyName); 

    // bind with - but how? 
    //Binding widthBinding = new Binding(widthMember); 
    //widthBinding.Source = columnSource; 
    //widthBinding.Mode = BindingMode.TwoWay; 
    //gridView.SetBinding(GridViewColumn.WidthProperty, widthBinding); <- gridView got no SetBinding :(
    } 
    return column; 
} 

Quelqu'un at-il quelques conseils pour moi comment je pourrais être en mesure de lier la largeur?

Répondre

3

Check this out: BindingOperations.SetBinding

Cette méthode crée une nouvelle instance de un BindingExpressionBase et associés l'instance avec la propriété dépendance donnée de l'objet donné. Cette méthode est le moyen d'attacher une liaison à un objet DependencyObject arbitraire que ne peut pas exposer sa propre méthode SetBinding .

BindingOperations.SetBinding(column, GridViewColumn.WidthProperty, widthBinding); 
+0

GridView ne contient pas la méthode SetBinding, où dois-je chercher cela? – Sam

+0

Ce n'est pas dans GridView, c'est dans BindingOperations, comme dit dans la réponse ... –

+0

@Sam: Oui! Puisque la classe GridViewColumn (pas GridView) n'a pas la méthode SetBinding, la liaison doit être faite de cette façon. Vérifiez ma modification pour le code. – Amsakanna

Questions connexes