Silverlight / wpf : masterpage

Résolu
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010 - 7 sept. 2009 à 17:26
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010 - 10 sept. 2009 à 16:49
Bonjour à vous !!!

Ma question, suivit du contexte.

Comment atteindre un élément présent dans la page maître depuis une page fille ?

Après avoir slalomer (oui c'est plus de la recherche ^^) entre de nombreux site, forum sur silverlight, je n'ai toujours pas trouvé réponse à ma question. Je pense que c'est peut être trop facile ou que cela coule de source pour les développeurs d'expérience mais il n'en est rien pour moi :(

J'ai une master page qui possède une balise frame dans laquelle seront charger les différentes pages de mon application. J'utilise le framework de navigation de SL3.

Cette balise frame (appelons la myFrame) est contenue dans une balise qui permet de verrouiller ses nœuds enfants (toutes les balises à l'intérieur histoire d'être compris de tous ^^).

A chaque fois qu'un traitement dans une page fille est effectué, par exemple, le remplissage d'une datagrid, je souhaite activer ce composant activity.

Malheureusement je ne sais pas comment faire pour pointer dessus :'(

Donc si quelqu'un connait comment faire ou même une astuce, je suis preneur :)

Merci beaucoup et bonne journée !

ps: une qui présente le composant dont je vous parle :
(du blog de david pollon)

4 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
8 sept. 2009 à 19:35
donc, en gros ton controle déclare 2 evènements :

public event EventHandler Working;
public event EventHandler Done;


Quand ton controle travaille tu décleches l'évènement :

if (this.Working != null) {
    this.Working(this, EventArgs.Empty);
}


(et la même chose pour Done)

Coté controle hote :
monControl.Working += new EventHandler(monControl_Working);
monControl.Done += new EventHandler(monControl_Done);


protected void monControl_Working(object sender, EventArgs e) {
   // ici tu affiches le WaitingControl....
}




Sébastien FERRAND
Consultant Sénior
Microsoft Visual C# MVP
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
8 sept. 2009 à 11:57
je pense que tu prends le problème à l'envers !

En fait, ce n'est pas à ton composant d'activiter ton "Activity".
Par contre, tu peux déclencher deux évènements (working et done). Et le controle conteneur devra intercepter ces évènements pour activer "Activity".





Sébastien FERRAND
Consultant Sénior
Microsoft Visual C# MVP
0
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
8 sept. 2009 à 15:08
C'est là que je me perds : à avoir trop lu de choses sur les event, théoriquement je vois très bien ^^ dans la pratique j'ai jamais réussi à faire fonctionner ça :'(


Qui possèdera le eventhandler ? La page maître ? Je devrai écouter les pages filles ? Une variable booléenne ?

Si tu peux m'éclaircir la dessus parce que j'ai un dossier de favoris contenant 13 liens sur les évênements ... Par pour autant que j'y arrive lol

Ce serait super gentil de ta part !

(je te demande pas du code ! après si tu n'as pas le temps d'expliquer plus en détails, je me contenterai d'un exemple :)

Merci beaucoup de ta réponse.
0
Kikuts Messages postés 159 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 5 novembre 2010
10 sept. 2009 à 16:49
En m'inspirant de ta réponse et de celle d'un autre forum j'ai à peu près réussi :D

Pk à peu près ? La raison est simple : je déclenche l'event de ma page fille, ma page mère déclenche un event.

Dans cet event je fais un messagebox (fonctionne) mais la ligne du dessous : MyActivityControll.IsActive = e.Loading (get sur propriété bool de la classe event. l'attribut s'appelle _loading). Puis un deuxième messagebox.

Les messagebox fonctionne. Cependant le controll ne s'active pas :(

Une idée ?
0
Rejoignez-nous