2011-05-11 5 views
0

J'essaie de lier la propriété Width d'un canevas à la propriété Width d'une instance Shape. Donc, la largeur de la forme doit être mise à jour lorsque la largeur du canevas reçoit une nouvelle valeurLiaison de données WPF de la propriété Width

Je veux le faire en code, sans XAML, car je crée ces éléments à l'exécution.

J'ai essayé, mais cela n'a pas fonctionné (le code est à l'intérieur de ma toile):

Binding binding = new Binding(); 
binding.Mode = BindingMode.OneTime; 
binding.Source = this; 
binding.Path = new PropertyPath("Width"); 
shape.SetBinding(FrameworkElement.WidthProperty, binding); 

Merci beaucoup pour votre aide!

ksman

+0

Lors de l'exécution, pourriez-vous vérifier la fenêtre de sortie pour les échecs de liaison de données? –

Répondre

2

OneTime semble erroné. Je pense que vous voulez utiliser OneWay ou TwoWay. Vérifiez the BindingModes

Modifier

Depuis OneWay et ActualWidth ne pas résoudre votre problème, je vous recommandons d'utiliser un outil pour les liaisons de débogage. J'utilise Snoop parce que c'est gratuit, mais il y en a d'autres. Déboguer WPF sans un outil comme celui-ci peut être douloureux.

1

Vous souhaitez probablement lier à ActualWidth et non Width.

Width est une entrée dans le processus de mise en page - c'est quelque chose que vous pouvez (mais ne devez pas) spécifier.

ActualWidth est une sortie du processus de mise en page - c'est la largeur réelle que vous voyez sur l'écran. Ceci est en partie déterminé par Width, s'il est présent, mais d'autres facteurs y entrent aussi (surtout si vous n'avez pas explicitement défini Width dans votre XAML).

+0

J'ai changé le PropertyPath à "ActualWidth" et le Mode à "OneWay". Mais ça ne marche toujours pas :-( – ksman

Questions connexes