Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Windows > Windows Presentation Foundation
Windows Presentation Foundation Forum d'entraide sur le développement d'applications Windows avec Windows Presentation Foundation
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/12/2012, 15h28   #1
Chav07
Invité de passage
 
Inscription : janvier 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 14
Points : 4
Points : 4
Par défaut ScrollViewer comportement étrange duplication graphique des controles

Bonjour,

Alors tout d'abord désolé pour le titre mais je ne savais comment exprimer le problème que j'ai.

Je m'explique. J'ai une application qui créer dynamiquement des champs de saisies utilisateur (userControl perso) en fonction du type de l'object et les ranges dans une grid. Chaque ligne de la grid contient un champ.

Ne connaissant pas à l'avance le nombre de champ de saisie j'ai décidé de placer ma grid dans un ScrollViewer afin de pouvoir scroller de bas en haut.

Voici le code de génération :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
//Je créer mon ScrollViewer
ScrollViewer scrollViewer = new ScrollViewer();
scrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
scrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
//Jy ajoute ma grid
scrollViewer.Content = grid;
//On ajout les lignes et user control à la grid
int metaShow = 0;
foreach (var meta in selectedMeta)
{
	if (meta.Visible) // On ne traite que ceux qui serront visibles.
	{
			object value = meta.GetMeta(obj);
			if (value != null)
			{
				//Je récupére mon User control en fonction du type
				UIElement uiElement = meta.Render(this, value) as UIElement;
				//Je créer une nouvelle ligne ou le mettre
				RowDefinition row = new RowDefinition();
				row.MinHeight = 60;
				grid.RowDefinitions.Add(row);
				Grid.SetRow(uiElement, metaShow);
				//Jel'ajoute
				grid.Children.Add(uiElement);
				metaShow++;
			}
	}
}
return scrollViewer;
Voilà ce que ça me donne visuellement et à coté quand je scroll !
=> 1 click de scroll => 2 click de scroll
En arrière plan reste tout le visuel et seul celui qui bouge, lié à la scroll bar est utilisable.

Je ne comprend vraiment pas pourquoi ça me fait ça. J'ai surement fais une erreur quelque part.

Merci d'avance pour votre aide.
Chav07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 17h12   #2
ikeas
Membre émérite
 
Inscription : juillet 2008
Messages : 1 095
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 1 095
Points : 942
Points : 942
Salut

Perso sans avoir creusé ton code, je comprend pas pourquoi tu fais pas un data template en collant directement ta collection d'objet
le container n'a pas vraiment d'importance
vu qu'on peut aussi le redéfinir
en plus ça serait nettement plus MVVM

un truc style
- scrollviewer
- puis in itemscontrol binding la collection d'object
- puis un autre itemscontrol binding la collection de sous object enfin d'object pour chaque champs
(ou tes usercontrols)
etc ....

la on dirait que tu as deux éléments superposés dans ton scroll ....

juste pour tester colle un sctack panel pour voir si tu en a pas un l'un en dessous de l'autre
ou au pire colle des background de couleur pour tes grilles
(tu verra peut être pas les autres dessous (mais il n'en reste pas moins qu'ils existeront)

tu as regardé avec snoop la structure visuel ?
__________________
IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
----------------------------------------------------
Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
ikeas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 09h02   #3
Chav07
Invité de passage
 
Inscription : janvier 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 14
Points : 4
Points : 4
Merci pour la réponse, je commence tout juste le WPF et vais donc regarder de plus prêt les data template avec le binding.
Et je te dis après, en tout cas merci.
Chav07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 15h00   #4
ikeas
Membre émérite
 
Inscription : juillet 2008
Messages : 1 095
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 1 095
Points : 942
Points : 942
si tu as une maquette tu peux me la send et je te montrerais si tu veux
__________________
IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
----------------------------------------------------
Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
ikeas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2013, 13h51   #5
Chav07
Invité de passage
 
Inscription : janvier 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 14
Points : 4
Points : 4
Finalement j'avais ajouter deux fois le scrollviewer.
Merci à Ikeas d'avoir analyser mon code et trouver la solution.
Chav07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h15.


 
 
 
 
Partenaires

Hébergement Web