2009-10-30 4 views
2

J'essaie de lier une propriété d'un élément dans un contrôle UserControl à une propriété définie sur le contrôle UserControl lui-même dans Silverlight. Je suis sûr que cela devrait être simple, mais je n'ai pas réussi à le faire fonctionner avec Liative RelativeSource ou ElementName. Dans cet exemple, je veux que le rectangle soit vert (ou quelle que soit la valeur de la propriété Background du UserControl).Lier à la propriété de l'élément parent dans Silverlight

<UserControl x:Class="MyUserControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="40" Height="40" Background="Green" x:Name="root"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <Rectangle x:Name="indicatorRectangle" Fill="{Binding Path=Background, ElementName=root}" Margin="0,0,26,0" /> 
    </Grid> 
</UserControl> 

quelqu'un connaît la syntaxe de liaison correcte?

Répondre

2

Fait intéressant, le XAML que j'ai posté dans la question initiale fonctionne correctement dans VS2010, donc je suppose que cela est quelque chose qui a été fixé dans le dernier Silverlight

2

Essayez ceci:

<UserControl ... Background="Green" x:Name="root">  
    <Grid x:Name="LayoutRoot" Background="White">   
    <Rectangle x:Name="indicatorRectangle" 
     Fill="{Binding Background, ElementName=root}" Width="10" Height="10" /> 
    </Grid> 
</UserControl> 

Il ne fonctionne pas pour moi jusqu'à ce que j'ai donné le rectangle d'une largeur et la hauteur.

2

Gardez à l'esprit que ce code cassera si vous utilisez la contrôlez l'utilisateur et définissez le nom (dans Silverlight 4.0, Visual Studio 10) avec x:Name=.

0

Ceci prend le premier ancêtre de type MyUserControl et s'y lie.

xmlns:controls="namespace of your control" ... 

<Rectangle x:Name="indicatorRectangle" Fill="{Binding Path=Background 
RelativeSource={RelativeSource AncestorLevel=1,AncestorType=controls:MyUserControl}"/> 
Questions connexes