-
PB de Binding (XAML)
Bonsoir,
Ce code fonctionne bien dans ma fenetre principale :
<Button Height="10" Width="10">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<im:GoToStateAction TargetObject="{Binding ElementName=LayoutRoot}" StateName="FaceSectionState"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
Mon probleme je voudrai faire la même action à partir d'un USERCONTROL. Je n'arrive pas à acceder à LayoutRoot de ma fenetre principale a partir de mon usercontrol avec le binding.
Avez-vous une idée pour m'aider ?
Merci
Laurent
-
Tu es en wpf, Silverlight, wp7 ou Metro?
Lier directement un usercontrol avec le nom d'un élément de son parent n'est pas une bonne idée car tu crée un couplage.
Maintenant pour résoudre, tu peux utiliser relativesource.ancestortype avec le type de ton parent mais ça crée aussi une sorte de couplage et ancestortype n'existe pas avec tous les Framework xaml.
Sans couplage, tu peux passer par des évent (créer un évent sur ton usercontrol, sur lequel le parent se registre), ou des messages (si tu utilises mvvmlight, par exemple)
-
Bonjour,
Merci beaucoup pour avoir passé de temps à me répondre. Alors je developpe une petite appli en wpf. As-tu un morceau de code pour m'aider ? Et moi de mon coté je vais chercher un exemple sur "event" sur le net.
Encore merci.
Laurent
-
J'ai essayé aussi de le faire avec un Behavior. Voici le code :
public class MenuBehavior : Behavior<FrameworkElement>
{
protected override void OnAttached()
{
base.OnAttached();
if (this.AssociatedObject != null) this.AssociatedObject.MouseLeftButtonDown += new MouseButtonEventHandler(Face_Click);
}
void Face_Click(object sender, MouseButtonEventArgs e)
{
VisualStateManager.GoToElementState(this.AssociatedObject, "FaceSectionState", true);
}
}
}
Cela fonctionne bien au niveau de la fenêtre principale mais rien ne se passe quand j'appelle MenuBehavior au niveau de mon usercontrol.
Laurent