2009-03-17 6 views
2

Dans ma classe App, j'ai une collection d'objets, comme ceci: (la collection est dans la classe App, car j'ai besoin d'y accéder) large dans des fenêtres différentes, etc.)Boîte de dialogue avec le comportement OK/Annuler en C#/WPF avec liaison de données

public partial class App : Application 
{ 
    public ObservableCollection<Person> Persons { get; set; } 

    public App() 
    { 
     Persons = new ObservableCollection<Person>(); 
     Persons.Add(new Person() { Name = "Tim", Age = 20 }); 
     Persons.Add(new Person() { Name = "Sarah", Age = 30 }); 
    } 
} 

public class Person 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

dans la fenêtre principale de l'application, il y a une ComboBox liant aux personnes Collection:

<ComboBox ItemsSource="{Binding Source={x:Static Application.Current}, Path=Persons}" DisplayMemberPath="Name"/> 

maintenant, je veux créer un dialogue, dans lequel l'utilisateur est capable d'ajouter/supprimer/modifier des personnes avec le bien connu O K/Annuler le comportement du bouton. Est-ce que ça peut être facile? Une chose importante est que les éléments du ComboBox ne doivent pas être affectés par les modifications que l'utilisateur est en train de faire avant d'appuyer sur OK.

Merci d'avance! Edit: Je pense que je dois préciser que je ne veux pas éditer une personne spécifique dans la boîte de dialogue, mais toute la liste des personnes.

Répondre

3

Ajouter et supprimer sont assez simples car cela n'arrivera que lorsque vous cliquez sur OK.

Pour le montage, vous plus d'options:

  1. gagnez de Person mettre en œuvre IClonable, passer une copie clonée du Person que vous modifiez d'être lié sur le formulaire de modification, puis passer le Person approprié dans votre Persons collection lorsque vous avez terminé. Cela rend le formulaire d'édition moins compliqué et plus WPFey. N'utilisez pas de liaison sur votre formulaire d'édition, faites simplement une synchronisation manuelle entre les contrôles et le Person passé lorsque vous avez terminé. Au moins WPFey.

  2. Une combinaison de 1 et 2 - le formulaire de modification a des propriétés qui reflètent les propriétés de Person et sont liés à ses contrôles, alors vous Synch la Person avec les propriétés du formulaire lorsque vous avez terminé.

Questions connexes