IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

[XAML] Héritage de controle


Sujet :

Silverlight

  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut [XAML] Héritage de controle
    Bonjour,

    Je me demande si cela a du sens :

    Dans mon application je vais avoir des espèces de fenêtres (un peu comme dans les WebOS).
    Elle partageront du code donc je me suis dit je vais faire une super classe héritant de UserControl et je ferais hériter mes fenêtres de cette classe qui contiendront que du code spécifique.
    Seulement ces fenêtres partage également un look and feel (tour de la fenêtre, barre de titre) donc je me dit, je vais mettre du XAML dans la super classe pour faire le contour de fenêtre

    mais la problème en fait c'est que je ne vois pas vraiment comment il va retrouver ses petits avec le xaml de la classe mère et fille ... bref je vois pas comment modéliser cela élégamment et efficacement.

    Donc voila comment est ce que vous ferriez ? (sans dupliquer le XAML pour ne pas avoir de problèmes avec les graphistes)

    merci

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    En fait, tu veux faire une sorte de MasterPage pour Silverlight ?

  3. #3
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    hummmm oui on peut le voir comme ça

    Edit : arf je sais pas écrire

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161

  5. #5
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Merci, c'est intéressant comme lien

    Mais hélas cela ne résout pas la problématique d'avoir de l'interface (du xaml) dans la classe mère.

    sinon j'ai pensé que je pourrai créer mes fenêtre comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Children.Add( new WindowContainer(new AWindowContent));
    et dans le constructeur du container, placer le AWindowContent où il faut ...

    Mais cela me plait beaucoup moins

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Par défaut
    J'ai déjà développé un projet similaire.
    Des applications fenetrées dans le navigateur web à l'aide de Silverlight.
    La solution pour laquelle j'ai opté est l'utilisation des "attached properties" avec laquelle je permet d'accéder dans le xaml au "content" (zone cliente.. un ContentControl) de ma fenêtre. Ensuite lorsque je veux créer une fenêtre je cré un user control dans laquelle je pose mon control "window" avec du code xaml à l'interrieur des balises de mon control "window".

    Si tu veux plus de précisions, je peux poster un exemple.

  7. #7
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    oki je veux bien

  8. #8
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 49
    Par défaut
    C'est simple, imagine que tu as un usercontrol que tu as nommé "Window"
    qui correspond à ta fenêtre générique.

    dans le code xaml de ce control tu ajoute un ContentControl qui jouera le rôle de "contentPlaceHolder"

    comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <ContentControl x:Name="content"
    </ContentControl>
    Dans le code behind du control tu ajoute un attached property comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public static readonly DependencyProperty ClientProperty = DependencyProperty.Register("ClientProperty", typeof(Grid), typeof(Window), new PropertyChangedCallback(ClientPropertyChanged));
     
    public Grid Client
    {
        get { return (Grid)GetValue(ClientProperty); }
        set { SetValue(ClientProperty, value); }
    }
     
    static void ClientPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    {
        ((Window)sender).content.Content = e.NewValue as Grid;
    }
    Ensuite pour bénéficier de l'existant quand tu créer un nouveau control tu peux faire comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <UserControl x:Class="Nwisoft.Controls.MyWindowSpec"
        xmlns="http://schemas.microsoft.com/client/2007" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:Nwisoft.Controls"
        Width="400" Height="300">
        <Grid x:Name="LayoutRoot" Background="Transparent">
            <local:Window>
                <local:Window.Client>
                    <Grid>
                        <Rectangle Fill="LightGray"></Rectangle>
                        <TextBlock>hello</TextBlock>
                    </Grid>
                </local:Window.Client>
            </local:Window>
        </Grid>
    </UserControl>
    J'ai utilisé le control Window que j'avais cré et j'ai ajouté du contenu via le xaml dans la balise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <local:Window.Client>
    <Grid>
    </Grid>
    </local:Window.Client>
    qui est disponible grâce à a propriété attaché écrite dans le code behind.

  9. #9
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Ah je connaissais pas ce contentcontrol, ca me semble pas mal

    Je vais tester ça merci

Discussions similaires

  1. [ZF 1.11] Héritage entre controller
    Par Retrokiller069 dans le forum Zend Framework
    Réponses: 1
    Dernier message: 16/02/2012, 09h38
  2. Réponses: 15
    Dernier message: 03/02/2012, 12h06
  3. héritage de Control et Concepteur graphique de VS
    Par juniorAl dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/03/2009, 11h17
  4. Héritage User Control
    Par Guy025 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/08/2008, 21h45
  5. héritage user control
    Par salihovic dans le forum Windows Forms
    Réponses: 13
    Dernier message: 05/12/2007, 12h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo