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 :

[WPF] Plantage lors de la création d'une instance de classe


Sujet :

Windows Presentation Foundation

  1. #1
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut [WPF] Plantage lors de la création d'une instance de classe
    Salut,

    Je suis en train de faire un projet un peu bidon (qui gère et affiche des "post-its") histoire d'apprendre WPF, et je viens de tomber sur un gros os (un fémur sans doute ). J'ai une classe PostIt, avec quelques propriétés genre le texte du post-it, la façon dont il doit s'afficher, etc, et une fenêtre PostItWindow qui sert à l'afficher. Il y a des bindings XAML entre les propriétés de la fenêtre et celles du post-it.
    Au début, ma classe PostIt n'héritait pas de DependencyObject, si bien que les modifications sur l'objet n'étaient pas répercutées sur la fenêtre, mais sinon ça marchait. Ensuite j'ai donc hérité de DependencyObject, en modifiant mes propriétés pour que ce soit des DependencyProperty (en utilisant le snippet "propdp") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            public string Text
            {
                get { return (string)GetValue(TextProperty); }
                set { SetValue(TextProperty, value); }
            }
     
            // Using a DependencyProperty as the backing store for Text.  This enables animation, styling, binding, etc...
            public static readonly DependencyProperty TextProperty =
                DependencyProperty.Register("Text", typeof(string), typeof(PostIt), new UIPropertyMetadata(""));
    (et ainsi de suite pour chaque propriété)
    C'est là que ça a commencé à partir en sucette... quand je lance le programme, au moment ou j'essaie de créer une instance de PostIt, le programme plante... En mode pas-à-pas, je ne peux même pas rentrer dans le constructeur, ça plante avant.
    Si je regarde la sortie du programme, je vois juste 2 exceptions (la première étant sans doute la cause de la seconde) :
    ...
    A first chance exception of type 'System.ArgumentException' occurred in WindowsBase.dll
    ...
    A first chance exception of type 'System.TypeInitializationException' occurred in WinPostIt.exe
    A noter, je crée le PostIt avant de créer la fenêtre principale... Et a priori l'assembly WindowsBase.dll doit plutôt concerner la GUI, qui à ce stade n'est pas encore créée.

    Bref, je comprends rien... en général, quand une exception se produit, on arrive au moins à voir où c'est, mais là même pas, on dirait c'est quelque part dans les rouages internes du framework

    Y a-t-il quelque chose de particulier à faire pour hériter de DependencyObject ? C'est la seule piste que je vois pour l'instant. Ou alors c'est un bug du framework 3.5, qui après tout est en beta...

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Au début, ma classe PostIt n'héritait pas de DependencyObject, si bien que les modifications sur l'objet n'étaient pas répercutées sur la fenêtre, mais sinon ça marchait.
    Tu aurais plutôt dû implémenter INotifyPropertyChanged

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Ah ben je vais essayer, ça règlera peut-être mon problème...
    Merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    En fait je m'étais un peu emmelé les pinceaux avec cette histoire de DependencyObject, ça sert plutôt pour des contrôles que pour des objets de données... INotifyPropertyChanged est effectivement plus adéquat.

    Ca marche nickel, merci beaucoup !

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

Discussions similaires

  1. Erreur lors de la création d'une instance "access denied"
    Par Artylus dans le forum Installation
    Réponses: 0
    Dernier message: 14/01/2014, 15h47
  2. [11gR2] Erreur lors de la création d'une instance Express Edition
    Par floryndas dans le forum Administration
    Réponses: 2
    Dernier message: 03/10/2012, 19h02
  3. Problème lors de la création d'une instance OC4J externe
    Par developppez dans le forum Autres
    Réponses: 0
    Dernier message: 03/05/2012, 10h35
  4. [Lazarus] [Linux] Erreur lors de la création d'une instance de classe héritée
    Par timmalos dans le forum Lazarus
    Réponses: 2
    Dernier message: 10/05/2011, 12h59
  5. Problème de charset lors de la création d'une instance 8i
    Par girint dans le forum Administration
    Réponses: 2
    Dernier message: 15/06/2007, 13h50

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