VS 2010, projet WPF.Comment mettre des textboxes dans une grille de données?
J'ai une grille de données avec du texte dans toutes les cellules (les données proviennent d'un tableau d'objets personnalisés). Cependant, je suis incapable de copier (ctrl + c) le contenu de n'importe quelle cellule. Je voudrais donc utiliser des zones de texte pour afficher le contenu de chaque cellule. Le vrai problème est que je ne peux pas le faire en XAML mais je dois le faire dynamiquement dans le code, car toute la grille est construite manuellement dans le code, donc XAML sait seulement qu'il y a une grille.
J'ai ajouté les colonnes de cette façon - tout ce que j'ai trouvé lié à la colonne est que je peux spécifier le modèle d'en-tête. Comment construire un modèle de cellule pour cela et définir le widget à la zone de texte?
int i = 0;
foreach (var db_col in query.FieldNames)
{
var col = new DataGridTextColumn();
col.IsReadOnly = false;
col.Header = db_col;
col.Binding = new Binding(String.Format("Visual[{0}]", i));
grid.Columns.Add(col);
++i;
}
Merci d'avance.
SolvedMerci à Marko, je suis finalement venu avec cette solution.
foreach (var db_col in query.FieldNames)
{
var template = new DataTemplate();
var elemFactory = new FrameworkElementFactory(typeof(TextBox));
elemFactory.SetBinding(TextBox.TextProperty, new Binding(String.Format("Visual[{0}]", i)));
template.VisualTree = elemFactory;
var col = new DataGridTemplateColumn();
col.CellTemplate = template;
col.IsReadOnly = true;
col.Header = db_col;
grid.Columns.Add(col);
++i;
}
Excellent! Je vous remercie. Au début, j'ai eu un problème avec le réglage du modèle pour une cellule, parce que j'ai oublié de changer le type de la colonne. – greenoldman