Comment créer par programmation de la Grille à l'intérieur de la ligne d'une Grille en Wpf
Je travaille dans WPF -- Il n'y a button
avec click event handler
dans mon application. Que je clique sur le bouton, il est gestionnaire d'événement génère une nouvelle ligne dans la grille nommé comme grids
. Dans cette nouvelle Ligne, je veux ajouter une autre grille par programme pour ajouter une Étiquette, Bouton et la zone de texte dans cette grille en ligne.
Comme je l'ai exécuté mon code il ne génère un texboxes! où les étiquettes et le bouton indiqué qu'une fois! Ici, le code et l'image est : hésitez pas à me demander si ma requête n'est pas clair pour vous!
int r =0;
private void button2_Click(object sender, RoutedEventArgs e)
{
TextEdit text1; Button button1; Grid grid1;
grids.RowDefinitions.Add(new RowDefinition());
text1 = new TextEdit();
text1.SetValue(Grid.ColumnProperty, 1);
text1.SetValue(Grid.RowProperty, r);
button1 = new Button();
button1.Content = "Left + " + r;
button1.Click += new RoutedEventHandler(button1_Click);
button1.SetValue(Grid.ColumnProperty, 1);
button1.SetValue(Grid.RowProperty, r);
grid1 = new Grid();
grid1.SetValue(Grid.ColumnProperty, 1);
grids.RowDefinitions.Add(new RowDefinition());
grid1.SetValue(Grid.RowProperty, r);
grids.Children.Add(button1);
grids.Children.Add(text1);
r = r + 1;
}
MODIFIER
int r =0;
private void button2_Click(object sender, RoutedEventArgs e)
{
db obj = new db();
var query = from p in obj.TableA select p ;
foreach(var a in query.ToList())
{
TextEdit text1; Button button1; Grid grid1;
grids.RowDefinitions.Add(new RowDefinition());
text1 = new TextEdit();
text1.SetValue(Grid.ColumnProperty, 1);
text1.SetValue(Grid.RowProperty, r);
button1 = new Button();
button1.Content = a.name;
button1.Click += new RoutedEventHandler(button1_Click);
button1.SetValue(Grid.ColumnProperty, 1);
button1.SetValue(Grid.RowProperty, r);
grid1 = new Grid();
grid1.SetValue(Grid.ColumnProperty, 1);
grids.RowDefinitions.Add(new RowDefinition());
grid1.SetValue(Grid.RowProperty, r);
grids.Children.Add(button1);
grids.Children.Add(text1);
r = r + 1;}
}
Vous devez utiliser
ok merci je devrais ajouter cette stackpanel dans grid1?
Grille avec le nom
ok je vais essayer cela
pouvez-vous ne pas imbriquer une grille dans une grille
StackPanel
au lieu de Grid
que la surface externe de mise en pageok merci je devrais ajouter cette stackpanel dans grid1?
Grille avec le nom
grids
devrait être un stackpanel
qui serait alors de contenir toutes les grilles..ok je vais essayer cela
pouvez-vous ne pas imbriquer une grille dans une grille
OriginalL'auteur Tameen Malik | 2013-09-29
Vous devez vous connecter pour publier un commentaire.
Ok. Supprimer tout votre code et tout recommencer.
Si vous travaillez avec WPF, vous avez vraiment besoin d'avoir WPF Mentalité
En règle générale, vous avez presque jamais créer ou manipuler des éléments d'INTERFACE utilisateur dans le code de procédure en WPF.
C'est ce que XAML est pour.
Ce la bonne manière de faire ce que vous demandez en WPF (dans un exemple de travail):
Code Derrière:
ViewModel:
Élément De Données:
Helper classes:
Résultat:
ObservableCollection
qui contient vos données et WPF crée automatiquement les nouveaux éléments de l'INTERFACE utilisateur lié à que.ViewModel<T>
qui est ensuite réutilisable pour n'importe quel type d'éléments de données.Command
etCommand<T>
sont également écrire une fois des classes réutilisables qui peuvent être trouvés dans tous les MVVM cadre comme Prism, MVVM Light ou Caliburn.Micro.File -> New Project -> WPF Application
et de voir les résultats pour vous-même.pourquoi voudriez-vous faire cela? MVVM va de pair avec WPF. Non-WPF MVVM est vraiment à la recherche d'ennuis inutiles.
Oui HighCore vous avez raison 🙂 . . . mais en fait, je veux ceci 🙁 🙂
Je crains de ne pas être en mesure de vous aider avec ça. L'écriture inutile, moche, difficile à maintenir le code n'est pas de mon domaine.
OriginalL'auteur Federico Berasategui
Il est vraiment beaucoup plus facile dans le derrière de code dans le code xaml..
Mon code Xaml:
Et le Code behind:
OriginalL'auteur ArchAngel