bonjour
je voudrais tester un peu les wpf forms mais j'ai un peu de mal
est-ce que quelqu'un sait comment rajouter un controle dynamiquement
enfin je cherche à comprendre la nouvelle logique, car plus de controls.Add ...
merci
Version imprimable
bonjour
je voudrais tester un peu les wpf forms mais j'ai un peu de mal
est-ce que quelqu'un sait comment rajouter un controle dynamiquement
enfin je cherche à comprendre la nouvelle logique, car plus de controls.Add ...
merci
IAddChild.AddChild peut-être ?
Les contrôles qui peuvent avoir des "enfants" implémentent cette interface
Code:monObjet.Children.Add(monSecondObjet);
peut etre... mais je ne vois rien apparaitre sur la fenetre ...
et sinon pour parcourir les controles (à l'époque, for each ctr in me.controls), une idée ?
@oyigit, l'objet window ainsi que l'objet grid qu'il y a dessus n'ont pas de propriété children ...
bon j'ai posé un canvas, avec lui j'arrive à ajouter des controles
étrange qu'on ne puisse pas sur une fenetre ...
autre question, comment mettre une image dans un label ? j'ai mis une image dans la propriété content et ca ecrit le nom de la classe plutot que de prendre l'image
autre question, comment poser un label par code et définir son emplacement avec un emplacement statique
(j'ai bien trouvé width et height mais plus de left et top ! (et le margin il m'embete))
autre question, peut on faire autrement que d'avoir ce systeme d'ancrage automatique ??
enfin, y a un tutorial quelque part ? :D
je crois que tu peux pas poser un contrôle directement sur une fenêtre... il faut qu'il y ait un controle Panel (Canvas, Grid, StackPanel...) sur la fenêtre, et tu mets les controles dedans.
La question que je me posais, c'est comment changer par le code les propriétés attachées (Grid.Row, Grid.Column par exemple). J'ai trouvé ça.
Il suffit de faire :
Code:
1
2
3
4 laGrille.Children.Add(leControle); Grid.SetColumn(leControle, indexDeLaColonne); Grid.SetRow(leControle, indexDeLaLigne);
hein ? chez moi la classe Grid a bien la propriété Children... ce qui m'échappe par contre, c'est que d'après la doc elle implémente l'interface IAddChild, et pourtant elle n'a pas de méthode AddChild !?Citation:
l'objet window ainsi que l'objet grid qu'il y a dessus n'ont pas de propriété children
PS : tu utilises quelle version du Framework ?
Moi j'ai la 3.5 (VS2008 beta 2), peut-être que ça a changé au cours des différentes beta...
vs 2008 beta 2 aussi donc fx 3.5 aussi
et pour grid et children, en fait j'ai posé un grid et dans xaml ca me défini le grid mais sans lui mettre de nom, pour ca que j'y avait pas accès je pense ...
Sinon, pour tes autres questions :
Chez moi ça marche bien...Citation:
autre question, comment mettre une image dans un label ? j'ai mis une image dans la propriété content et ca ecrit le nom de la classe plutot que de prendre l'image
Code:
1
2
3
4 <Label Name="label1" VerticalAlignment="Stretch"> <Image Source="cat.png" /> </Label>
Sur un Canvas, même principe qu'avec la grille :Citation:
autre question, comment poser un label par code et définir son emplacement avec un emplacement statique
(j'ai bien trouvé width et height mais plus de left et top ! (et le margin il m'embete))
Canvas.SetTop
Canvas.SetLeft
Ca dépend du container que tu utilises. Si c'est un Canvas tu mets les contrôles où tu veuxCitation:
autre question, peut on faire autrement que d'avoir ce systeme d'ancrage automatique ??
oui mais moi je veux le faire par code pendant l'execution, pas en xamlCitation:
Chez moi ça marche bien...
Code:
1
2
3
4 <Label Name="label1" VerticalAlignment="Stretch"> <Image Source="cat.png" /> </Label>
mais ca vient ptete du fait que je lui donne un system.Drawing.image est qu'il veux un image du framework 3.5
settop est à priori shared, je ne vois pas comment l'utiliser dans mon cas, ou alors c'est torduCitation:
Sur un Canvas, même principe qu'avec la grille :
Canvas.SetTop
Canvas.SetLeft
autre question, comment mettre une image de fond sur une fenetre ? sur un canvas ? ... c'est deseperant leur nouveau truc !
Je ne sais pas si c'est dû au fait que tu utilises System.Drawing.Image...
Mais par code, tu dois avoir une propriété Children logiquement (ca fait un bout de temps que j'ai pas touché au framework 3/3.5)...
Tout contrôle peut être conteneur en WPF donc tous les contrôles ont a mon avis cette propriété children... (je parle de tête sur le peux d'essai que j'ai fait lol)
Sinon une petite chose, évites de poser 30 questions en même temps car moi perso ça me donne l'impression que tu postes sur le forum et que tu cherches très peu par toi même.
je fais qu'ca de chercher mais l'aide est pas finie ... et puis c'est une nouvelle logique sur un produit non vendu, alors pour trouver des infos c'est pas évident ...
enfin j'ai finalement réussi à faire ce que je voulais faire, tester les perf de WPF
suf le framework 2 en posant 200 label avec une image qui clignote sur un pc dual core avec une carte 3d je suis à 20% de ressources processeur
sur le framework 3.5 en wpf je varie entre 30 et 60%
(et moins de 5% sous vb6 y a quelques années ...)
moi qui croyait que ca allait etre mieux ...
c'est malheureusement obligé que ça se passe ainsi... Microsoft (et y a pas que lui) pense avant tout aux utilisateurs finaux qui veulent quelque chose de "joli"...
On le dit pas assez souvent mais je pense que la "beautification" (ca se dit? lol) à les mêmes inconvénients que la "sécurité"... c'est à dire : perte de temps et perte de performances...
--
Sinon pour tous ce qui est info sur WPF, il y a de très bons blogs anglais (j'ai pas les adresses ici, suis au boulot) ;)
En effet il faut une image ImageSource (ou une classe dérivée). Fais comme ça :Citation:
oui mais moi je veux le faire par code pendant l'execution, pas en xaml
mais ca vient ptete du fait que je lui donne un system.Drawing.image est qu'il veux un image du framework 3.5
Attention, il faut que l'image soit dans ton projet, compilée en tant que ressource (pas dans un .resx...)Code:
1
2 BitmapImage img = New BitmapImage(New Uri("pack://application:,,,/cat.png"))
Oui c'est statique (ou shared si tu preferes), mais tu précises l'objet en paramètre :Citation:
settop est à priori shared, je ne vois pas comment l'utiliser dans mon cas
Code:Canvas.SetTop(leControle, laValeurDeTop)
Pas encore cherché...Citation:
image de fond sur une fenetre
lol, c'est l'impression que j'ai eu au début... mais maintenant que je commence à prendre le pli, je trouve ça plutôt pas mal, surtout tout ce qu'on peut faire avec les bindingsCitation:
c'est deseperant leur nouveau truc !
je suis d'accord sur la théorie
mais y a le fait que fx2 et gdi+ n'est pas hardware accelerated alors que wpf tire partie de direct3D
donc je m'attendais à un mieux
et une fenetre avec des boutons reste quand meme moins belle qu'un jeu 3d récent donc ca pourrait quand meme etre mieux en terme de perf
par contre c'est vrai que étant sur vb.net depuis peu, c'est un vrai plaisir à coder avec cette structure objet...
PS : pour la beautification j'suis pas sur, peut etre plus embellissement à priori :D