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") :
(et ainsi de suite pour chaque propriété)
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(""));
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 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....
A first chance exception of type 'System.ArgumentException' occurred in WindowsBase.dll
...
A first chance exception of type 'System.TypeInitializationException' occurred in WinPostIt.exe
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...
Partager