2009-10-14 6 views
4

Existe-t-il un moyen de lier l'instance d'un autre contrôle? Quelque chose comme ceci:Liaison à un autre contrôle dans Silverlight

<Button x:Name="Foo" Content="Foo" /> 
<local:CustomControl OtherControl="{Binding Foo}" /> 

J'ai essayé d'installer DataContext à « ce » dans le constructeur de MainPage mais il ne semble pas fonctionner.

CustomControl est défini comme ceci:

class CustomControl 
{ 
    public FrameworkElement OtherControl { get; set; } 
} 

Répondre

7

Je ne sais pas ce que vous essayez de faire, mais dans Silverlight 3, vous pouvez utiliser l'élément de fixation pour se lier à une propriété sur un contrôle.

<Button x:Name="Foo" Content="Foo" /> 
<local:CustomControl x:Name="control" Property="{Binding Path=Content, ElementName=Foo}" /> 

Dans le code, vous pouvez toujours analyser la liaison et obtenir l'élément à partir de cela?

control.GetBindingExpression (Propriété) .ParentBinding.Source

1

Il est impossible dans Silverlight 2:

Silverlight 2 ne vous permet pas de lier un élément à un autre élément. Au lieu de cela, toutes les liaisons sont des objets de données . (Vous pouvez contourner cela en utilisant un objet intermédiaire, mais l'inconvénient supplémentaire signifie il est rarement utile.)

1
<Button x:Name="Foo" Content="Foo" /> 
<local:CustomControl x:Name="control" OtherControl="{Binding ElementName=Foo}" /> 
+0

Il est possible que ce ne fonctionnait pas avec Silverlight 2.0, mais pour 5,0 (et peut-être ci-dessous) c'est certainement la bonne réponse en ce qui concerne la liaison l'instance d'un autre contrôle. –

Questions connexes