2009-07-21 6 views
0

Je souhaite effectuer un transtypage dans une déclaration de liaison dans le code (C#). Voici un morceau rapide code illustrant ma situation:TypeCast dans le chemin de liaison

Binding aBinding = new Binding(); 
aBinding.Mode = BindingMode.OneTime; 
aBinding.ElementName = "FullPagePageViewGrid"; 
//aBinding.Path = new PropertyPath("((IPageLayout)Children[0])"); // What I'd like to do - causes error 
aBinding.Path = new PropertyPath("Children[0]"); 
aBinding.Converter = new IsSelectedTextBoldConverter(); 
this.aLabel.SetBinding(Label.ContentProperty, aBinding); 

Voici l'erreur que je reçois - sans surprise, VS se plaint de ne pas trouver le chemin:

System.Windows.Data Error: 39 : BindingExpression path error: '((IPageLayout)Children[0])' property not found on 'object' ''Grid' (Name='FullPagePageViewGrid')'. BindingExpression:Path=((IPageLayout)Children[0]); DataItem='Grid' (Name='FullPagePageViewGrid'); target element is 'Label' (Name='aLabel'); target property is 'Content' (type 'Object') 

Répondre

1

Désolé, mais vous ne pouvez pas le faire De cette façon, le chemin doit être "direct". Cependant, c'est ce que les convertisseurs devraient faire; vous devez en fournir un qui effectue également tout le casting dont vous avez besoin.

+0

C'est ce dont j'avais peur. J'ai réussi à utiliser un convertisseur mais je voulais voir si je pouvais le connecter directement. Merci! – Joel

Questions connexes