2010-10-02 4 views
2

J'ai une application pour le suivi des dépenses. Les utilisateurs ajoutent de nouvelles dépenses via un formulaire. Les dépenses sont conservées dans une collection. Je ne connais pas encore Silverlight et je ne sais pas exactement quelle est la meilleure façon de configurer mon application. Actuellement, j'ai un DataGrid avec des colonnes que j'ai définies pour formater les membres du ICollection bien. Dans le code derrière, j'ai spécifié une collection à la ItemSource de la grille de données. Chaque dépense est représentée par une classe appelée ExpenseInfoSilverlight: Comment entrer des données dans une collection?

Pour ajouter de nouvelles dépenses, je pensais que je voudrais faire une nouvelle instance de ExpenseInfo, et les données lier les valeurs dans les entrées de formulaire. Ensuite, lorsque l'utilisateur clique sur Envoyer, cette instance est ajoutée à la collection.

Je ne suis pas entièrement sûr de savoir comment faire cela. Est-ce que je le spécifie dans Xaml? En code-behind?

Aussi, maintenant j'ajoute ExpenseInfo éléments à la collection de sauvegarde, mais la grille de données ne change pas. (Peut-être mon mode de liaison est erroné?) Cela fonctionne dans le constructeur de la page:

 CurrentExpensesGrid.ItemsSource = expenses; 
     ExpenseInfo initialExpense = new ExpenseInfo() { Cost = "23", Date = DateTime.Now, WhoPaid = "foo", Name = "bar" }; 
     initialExpense.WhoOwes.Add("baz"); 
     initialExpense.WhoOwes.Add("ftw"); 
     expenses.Add(initialExpense); 

Cependant, ce qui suit ne fonctionne pas dans le bouton Ajouter gestionnaire d'événements, cliquez sur:

 expenses.Add(newExpense); 
     expenses.Add(new ExpenseInfo() {Cost="2", Name="fje", Date = DateTime.Now, WhoPaid="foe"}); 

Et par « doesn 't travail', je veux dire que les nouveaux éléments n'apparaissent pas dans la grille de données.

Répondre

0

Vous pouvez utiliser ObservableCollection dans silverlight,

1 Collection que vous utilisez dans ItemSource peut être un ObservableCollection de ExpenseInfo.

2- Il doit y avoir un bouton appelé 'Add More Expense'. Lorsque l'utilisateur clique sur ce bouton, vous pouvez créer un nouvel objet de ExpanseInfo et l'ajouter à la collection. 3- observablecollection écoute les modifications afin qu'une nouvelle ligne soit ajoutée dans la grille.

+0

Ai-je besoin de définir le mode de liaison à deux voies? Est-ce que je peux le faire sans préciser à quoi cela est lié? –

Questions connexes