2010-12-13 7 views
0

HI,propriété UserControl de base Reliure

J'ai un UserControl Silverlight où je lie la UserControl.Background propriété à un élément de frontière à l'intérieur. J'ai trouvé un moyen facile de lier l'arrière-plan comme ça:

<UserControl x:Name="root" 
    x:Class="TestProject.MyControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    Background="Red" > 

    <Border x:Name="brdMain" Background="{Binding Path=Background, ElementName=root }" > 
     etc... .... ... 
    </Border> 

Le problème avec c'est quand j'instancier mes UserControl plusieurs fois. Je reçois l'erreur suivante:

Error: Unhandled Error in Silverlight Application 
Code: 2028  
Category: ParserError  
Message: The name already exists in the tree: root.  
File:  
Line: 0  
Position: 0  

Alors est-il une autre meilleure façon de lier ma propriété de fond Usercontrol sans avoir à nommer mon UserControl comme ça: x: Name = « root »?

Merci

Répondre

0

Essayez ...

Background="{Binding Background, RelativeSource={RelativeSource AncestorType={x:Type UserControl}, Mode=FindAncestor}}" 

EDIT:

Puisque ce qui précède est uniquement valable dans WPF (SL ne supporte que TemplatedParent et auto) une approche variable pourrait être prise . Vous pouvez créer un DependencyProperty (propdp est l'extrait IntelliSense dans Visual Studio) sur le UserControl qui définirait correctement l'enfant Border.Background.

J'essaie de comprendre pourquoi vous voulez définir le Background sur le UserControl mais contre la mise simplement sur le Border et en laissant le vide UserControl d'une position visuelle; lui permettant d'être le conteneur physique des contrôles enfants qui représenteront les visuels.

+0

ne fonctionne pas ... obtenir l'erreur suivante: la propriété « AncestorType » n'a pas été trouvé dans le type RelativeSource – danbord

+1

@danbord Arg ... SL n » t soutenir FindAncestor; laissez-moi voir s'il y a une autre façon –

+0

@danbord Ajout de détails supplémentaires ... –

Questions connexes