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

Windows Presentation Foundation Discussion :

Hériter d'un TreeViewItem et nouvelles propriétés


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Par défaut Hériter d'un TreeViewItem et nouvelles propriétés
    Bonsoir à tous,

    voilà je voulais faire un contrôle appelé TreeNode hérité de TreeViewItem qui présenterait notamment 2 propriétés public Checked et TreeNodeText décrite ci-dessous

    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
    18
    19
    20
     
    public partial class TreeNode : TreeViewItem
        {
            public TreeNode()
            {
                InitializeComponent();
            }
     
            public string TreeNodeText
            {
                get { return treeNodeTextBlock.Text; }
                set { treeNodeTextBlock.Text = value; }
            }
     
            public bool Checked
            {
                get { return (bool)checkBox.IsChecked; }
                set { checkBox.IsChecked = value; }
            }
        }
    et le xaml du truc :

    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
     
    <TreeViewItem.Header>
            <CheckBox x:Name="checkBox"
                      BorderThickness="1"
                      Height="16">
                <TextBlock x:Name="treeNodeTextBlock"
                           HorizontalAlignment="Left"
                           Height="14"
                           TextWrapping="Wrap"
                           Text="Text"
                           VerticalAlignment="Center"
                           FontSize="10"
                           FontFamily="Microsoft Sans Serif"
                           Margin="8,4,0,0"/>
            </CheckBox>
    </TreeViewItem.Header>
    Mon problème c'est que maintenant quand j'utilise ce TreeNode comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <TreeView x:Name="tree">
                  <uc:TreeNode TreeNodeText="item1"/>
    </TreeView>
    En ajoutant bien sûr la référence vers le contrôle, apparemment pas d'erreur de ce côté là car le fait de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <TreeView x:Name="tree">
                  <uc:TreeNode/>
    </TreeView>
    ne produit pas d'erreur, le comble c'est qu'on me propose automatiquement la propriété quand je commence à écrire son nom.

    Ca ne compile pas et une erreur me dit : "Le membre TreeNodeText n'est pas reconnu ou n'est pas accessible"

    Le fait d'ajouter des balises <TreeViewItem> </TreeViewItem> de part et d'autres de TreeViewItem.Header dans le code XAML ne change rien

    D'ailleurs je ne savais pas qu'on pouvait hériter de TreeViewItem aussi facilement mais j'ai quand même essayé et apparemment j'ai pas eu d'erreur avant d'introduire ces propriétés, enfin peut-être que l'erreur vient de là quand même...

    Vous auriez des suggestions ?

    Merci d'avance

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Par défaut
    Personne n'a une réponse à me donner ? Sinon, j'ai trouvé cet article. Faut-il donc que je fasse un Custom Control et non plus un User Control ?

    EDIT : Bon finalement après une génération le truc marche maintenant

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    Salut,

    J'ai lu ton edit et je suis quand même surpris que ça fonctionne

    Normalement, lorsque tu créés un contrôle graphique, si tu veux pouvoir faire un set d'une propriété depuis ton XAML, il faut que celle-ci soit une Dependency Property.

    Les propriétés standards peuvent être utilisé dans le cadre d'un binding uniquement (et doivent utiliser INotifyPropertyChanged)

Discussions similaires

  1. Nouvelles propriétés Vcard
    Par ptitnicois dans le forum Android
    Réponses: 0
    Dernier message: 15/05/2013, 19h59
  2. [AC-2003] Sauvegarder nouvelles propriétés des contrôles
    Par 2nis dans le forum Access
    Réponses: 1
    Dernier message: 21/09/2012, 17h19
  3. [Protégé] Ajout de nouvelles propriétés sous protégé
    Par zool_21 dans le forum Ontologies
    Réponses: 2
    Dernier message: 17/05/2012, 22h11
  4. ListView1 et nouvelle propriété
    Par mamou30 dans le forum Composants VCL
    Réponses: 0
    Dernier message: 05/08/2007, 00h18
  5. [c#/UserControl] Ajout des nouvelles propriétés
    Par layouni dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/04/2007, 10h02

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