2008-09-16 4 views
7

Il me manque le bateau sur quelque chose ici, les enfants. Cela ne cesse d'élever la tête et je ne sais pas ce qui se passe avec, donc j'espère que mon homeys ici peut aider. Lorsque vous travaillez dans Silverlight, lorsque je crée des liaisons dans mon code C#, elles ne tiennent jamais lorsque l'application est en cours d'exécution. Les liaisons déclaratives de mon xaml semblent correctes, mais je fais quelque chose de mal quand je crée mes liaisons en C#. J'espère qu'il y a quelque chose d'évident qui me manque. Voici une liaison typique qui est écrasée:Liaison programmatique dans Silverlight

TextBlock tb = new TextBlock(); 
Binding b = new Binding("FontSize"); 
b.Source = this; 
tb.SetBinding(TextBlock.FontSizeProperty, b); 
+0

Comment voulez-vous dire "écrasé"? Est-ce que la liaison ne fonctionne tout simplement pas? –

+0

Oui, ça ne semble pas avoir d'effet à l'exécution. – MojoFilter

+10

Je suis tenté de vous rejeter pour l'utilisation du mot «homey». :-) –

Répondre

2

On dirait qu'à partir de Silverlight 3.1, ce n'est plus un problème. Je ne peux pas le reproduire, en tout cas.

+0

Je peux reproduire quelque chose comme ça http://stackoverflow.com/questions/3217740/silverlight-4-setbinding-not-working – cmaduro

7

Je viens d'essayer le code exact que vous venez de publier et cela a bien fonctionné, avec quelques changements. Je crois que le problème est l'élément que vous utilisez pour l'appel SetBinding n'est pas le bloc de texte que vous voulez lier. Il doit être:

TextBlock tb = new TextBlock(); 
Binding b = new Binding("FontSize"); 
b.Source = this; 
tb.SetBinding(TextBlock.FontSizeProperty, b); 

Assurez-vous que vous avez également une propriété publique FontSize de type double sur "this". Si "this" est un contrôle utilisateur, je vous recommande de renommer la propriété afin de ne pas masquer le membre hérité.

+0

Vous avez raison, c'était en fait juste un artefact de copier/coller. Dans ce cas, 'this' est un contrôle personnalisé et je fais référence à sa propriété FontSize héritée. Je vois cela se produire partout. J'ai peur que c'est quelque chose que je fais qui supprime réellement la liaison, mais je ne peux pas l'identifier. – MojoFilter