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 :

Heritage Combobox & template


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Par défaut Heritage Combobox & template
    Salut,

    Dans un projet j'ai besoin de faire de l'héritage sur le control combobox. Je souhaite définir un template dans cet héritage, mais je n'y arrive pas

    Voici le XAML de mon control DropDOwnCustomControl

    Code xml : 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
    18
    <ComboBox x:Class="MyCustomControl.DropDownCustomControl"
        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"
     
        >
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Margin="0,3,0,3">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Width="150" Text="{Binding Path=NameValue}" VerticalAlignment="Center" FontSize="14"/>
                            <TextBlock Text="{Binding Path=CodeValue}" HorizontalAlignment="Right" VerticalAlignment="Center"  FontSize="12"  />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
    </ComboBox>

    Le template n'est pas pris en compte... Par contre si je met le template lorsque j'utilise cette nouvelle classe elle est bien pris en compte... ex:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <bap:DropDownCustomControl Name="DropDownCustomControl1">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Margin="0,3,0,3">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Width="150" Text="{Binding Path=NameValue}" VerticalAlignment="Center" FontSize="14"/>
                            <TextBlock Text="{Binding Path=CodeValue}" HorizontalAlignment="Right" VerticalAlignment="Center"  FontSize="12"  />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
    </bap:DropDownCustomControl>

    Avez vous une idée de pourquoi, et donc de comment résoudre ce problème?

    Merci d'avance !!

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Le plus simple pour toi serait sans doute de passer par blend pour créer une copie du template existant puis de le modifier à ta guise. La modification par style est souvent plus simple que la création d'un nouveau Control.

    Pour créer un control ta façon de faire n'est pas la bonne.
    Il faut créer une classe qui hérite d'un control dont le template se trouve un fichier generic.xaml dans un dossier theme (à creer dans ton projet si il n'existe pas)

    Un tuto pour créer un controle : http://blog.naviso.fr/wordpress/?p=102

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Par défaut
    Enfaite il n'y a pas que le style qui change, le fonctionnement de la combobox est également modifié, c'est pour ça que j'utilise l'héritage.


    Je n'ai pas accès à ton blog depuis le boulot... Je regarderais de chez moi... Et je vais essayé de faire ça proprement !

    Merci

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Oula c'est pas comme ca qu'on herite d'un controle.

    Il faut juste que tu crees une classe qui herite de ton controle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class MyComboBox : ComboBox
    {
       public MyComboBox()
       {
          this.DefaultStyleKey = typeof(MyComboBox);
       }
    }
    Ensuite tu crees un repertoire theme et dans ce repertoire du mets un fichier generic.xaml dans lequel tu vas definir le theme de ton controle.

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Par défaut
    Merci beaucoup pour le blog!
    ça fonctionne beaucoup mieux maintenant!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/04/2011, 09h58
  2. Heritage-Spécialisation d'un template
    Par remitbo dans le forum Langage
    Réponses: 9
    Dernier message: 25/01/2008, 08h36
  3. Réponses: 6
    Dernier message: 28/12/2006, 18h22
  4. Réponses: 3
    Dernier message: 22/11/2006, 21h10

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