2010-02-18 9 views
0

J'ai le scénario suivant (j'utilise Beta Silverlight4):Silverlight lie modèle objet: ne peut pas faire fonctionner

UserControl A: -> DataContext est un objet de MyModel de classe qui contient des propriétés Property01 (CustomClass), Property02 (CustomEnum). La classe MyModel implémente INotifyPropertyChanged et toutes les propriétés appellent l'événement PropertyChanged chaque fois qu'elles changent.

UserControl B: -> DataContext doit être un objet de type (CustomClass) -> DependencyProperty MyProperty de type (CustomEnum)

Mon UserControlA contiendra un UserControlB et je voudrais lier les propriétés dans le manière suivante (à partir de XAML):

-> UserControlB.DataContext = UserControlA.DataContext.Property01 
-> UserControlB.MyProperty = UserControlA.DataContext.Property02 

<!-- DataContext = MyModel --> 
<Grid x:Name="LayoutRoot"> 

    <foo:UserControlB x:Name="xpto" DataContext="{Binding Property01}" MyProperty="{Binding Property02}" /> 

</Grid> 

Faire les choses comme ci-dessus définit le DataContext de UserControlB à la valeur correcte, mais la liaison sur UserControlB.MyProperty ne se produit jamais. Si je supprime l'instruction DataContext = "{Binding Property01}", la liaison sur UserControlB.MyProperty se produira.

Quelqu'un peut-il me expliquer si s'il vous plaît je fais quelque chose qui va agains les lois universelles de Silverlight :-)

Un grand merci à l'avance, Bruno

Répondre

1

La façon dont votre XAML est configuré la liaison est actuellement:

-> UserControlB.DataContext = UserControlA.DataContext.Property01 
-> UserControlB.MyProperty = UserControlB.DataContext.Property02 

La façon dont:

MyProperty="{Binding Property02}" 

Works c'est qu'il dit Bind à la propriété "Property02" sur mon DataContext, si je n'ai pas un DataContext vérifier mes parents DataContext, et jusqu'à l'arbre jusqu'à ce qu'il trouve un DataContext.

Il ne signifie toutefois pas continuer à l'arbre si le DataContext ne dispose pas d'une propriété nommée « Property02 »

+0

Salut, Merci pour votre réponse rapide. N'existe-t-il aucun moyen de forcer une liaison à commencer à vérifier uniquement sur le DataContext du parent et au-dessus (ang ignore le DataContext actuel)? – Bruno

+0

Je ne pense pas que vous pouvez dans Silverlight. –

Questions connexes