WPF - Utilisation Grid dynamique
Bonjour à tous.
Pour mon application, j'ai créé un contrôle personnalisé. Je veux l'insérer dans ma form WPF autant de fois que j'ai des lignes dans une table SQL.
J'ai créé une grid et j'aimerais savoir comment créé la grid dynamiquement, au fur à mesure que j'ai des lignes dans SQL.
J'aimerais disposer mes éléments en 2 colonnes et autant de lignes que nécessaire de la façon qui suit :
A / B
C / D
E /F
...
Voici ma boucle actuelle avec en dernière ligne de code grDatas.Children.Add(ucOperation) --> C'est cette ligne qui ajoute mon contrôle préalablement rempli dans la Grid, mais comme je ne créé aucune colonne / ligne nul part alors il s'empilent tous l'un sur l'autre.
Merci !
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| for (int i = 0; i < dvOps.Count; i++)
{
CL_Operation clOp = new CL_Operation();
clOp.A= dvOps[i]["A"].ToString().Trim();
clOp.B= dvOps[i]["B"].ToString().Trim();
clOp.C= dvOps[i]["C"].ToString().Trim();
clOp.D= dvOps[i]["D"].ToString().Trim();
clOp.E= dvOps[i]["E"].ToString().Trim();
clOp.F= dvOps[i]["F"].ToString().Trim();
clOp.G= Convert.ToString(Convert.ToDouble(String.Format("{0:0}", dvOps[i]["G"].ToString().Trim()))) + " pces";
clOp.H = Convert.ToString(Convert.ToDouble(String.Format("{0:0.00}", dvOps[i]["H"].ToString()))) + " Hrs";
clOp.I = dvOps[i]["I"].ToString().Trim();
clOp.J= dvOps[i]["J"].ToString();
clOp.K= dvOps[i]["K"].ToString();
clOp.L = dvOps[i]["L"].ToString();
lstOperations.Add(clOp);
Operations ucOperation = new Operations();
//ucOperation.NoOfOp =
ucOperation.A.Content = clOp.A+ " - " + clOp.B;
ucOperation.C.Content = clOp.C;
ucOperation.D.Content = clOp.D;
ucOperation.E.Content = clOp.E;
ucOperation.F.Content = clOp.F;
ucOperation.G.Content = clOp.G;
ucOperation.H.Content = clOp.H;
ucOperation.J.Content = clOp.J;
ucOperation.K.Content = clOp.K;
ucOperation.L.Content = clOp.L;
ucOperation.M= clOp.M;
DateTime dt = Convert.ToDateTime(clOp.A);
TimeSpan t = dtNow.Date - dt.Date;
if (Convert.ToDouble(t.TotalDays) > 5)
ucOperation.A.Foreground = Brushes.Red;
else if (Convert.ToDouble(t.TotalDays) < 6 && Convert.ToDouble(t.TotalDays) > -1)
ucOperation.A.Foreground = Brushes.Orange;
ucOperation.A.Content = Convert.ToString(Math.Abs(Convert.ToDouble(t.TotalDays))) + " jrs";
ucOperation.Margin = new Thickness(top, left, 0, 0);
grDatas.Children.Add(ucOperation);
} |
Egalement, comme vous pouvez le voir, j'utilise une classe, que je remplis dans une liste pour chaque objet. J'espère que la manière de travailler est bonne !