11
votes

WPF - Ajout de commandes dynamiques au tabitem ajouté de manière dynamique?

J'ajoute de manière dynamique des tabitems à une commande de tabulation au moment de l'exécution (en C #) et qui fonctionne correctement, mais comment puis-je ajouter de manière dynamique des contrôles au nouveau Tabitems? Les Tabitems doivent être dynamiques car ils dépend du nombre de lignes de données sont lues dans une base de données. La disposition de chaque tabitem sera identique. Merci


0 commentaires

3 Réponses :


2
votes

Le Tabitem est un contrôle de contenu, il suffit de définir sa propriété de contenu pour être n'importe quel type d'élément que vous souhaitez afficher (par exemple une grille contenant d'autres éléments, etc.)


0 commentaires

5
votes

Utilisez le Contenu Propriété du Nouveau Tabitem, vous pouvez également définir n'importe quoi, comme des chaînes ou d'autres commandes WPF: xxx


0 commentaires

14
votes

Si chaque tabitem code> va avoir la même mise en page, je créerais simplement un usercontrol code> qui englobe ce dont vous avez besoin d'une position de mise en page et de contrôle, puis placez cela dans le tabitem.content code> propriété.

Vous pouvez ensuite transmettre les données via une représentation d'objet vers la propriété tabitem.datacontext code> pour lancer et utiliser la liaison. P>

TabItem item = new TabItem();
item.Content = new CustomUserControl();
item.DataContext = data; //where data is the data that 
                         //comes from the database 
                         //being represented in object form


6 commentaires

Merci, je commence à faire des progrès maintenant. Donc, si mon UserControl contient de dire plusieurs contrôles, dis-tu que je peux transmettre les données "tout en une seule go" au Tabitem en emballant les données dans un objet? Vraisemblablement, l'Usecontrol pourrait contenir une méthode pour faire ce que je pouvais appeler?


@Paul dans tant de mots oui. Dans votre UserControl, vous pouvez ensuite utiliser la databinding, car lorsque vous définissez le DataContext du Tabitem, il va cascader. Ensuite, dans l'UserControl, vos commandes peuvent être liées aux données dans le DataContext.


Merci beaucoup Aaron pour toute votre aide, une seule question de plus, chaque tabitem est identique mais je ne suis pas sûr que le meilleur contrôle (s) de contrôle (s). Sur chaque onglet, j'ai besoin d'afficher les "lignes" représentant chaque ligne lue à partir d'une base de données. Chaque ligne de données comprend 3 champs de texte, un booléen et un entier compris dans la plage 1-4 représentant l'une des 4 images possibles. J'ai besoin d'afficher le texte, la valeur booléenne, (dans une case à cocher) et l'image correspondante avec un contrôle approprié avec lequel le changer. Puis-je faire cela en quelque sorte avec un DataGrid?


@Paul Oui Un DataGrid serait parfait pour cela, il existe des colonnes de stocks ainsi qu'une colonne de modèle que vous pouvez définir comme vous le voyez ... blogs.msdn.com/b/vinsibal/archive/2008/08/19/...


Thats aaron fantastique, ce dont j'avais besoin, le meilleur Noël présent !! Merci beaucoup pour votre aide.


Passer des formes au WPF, cela a vraiment aidé.