2009-03-17 13 views
2

In meiner App-Klasse habe ich eine Sammlung von Objekten, wie folgt: (die Sammlung ist in der App-Klasse, weil ich Zugriff darauf haben muss) breit in verschiedenen Fenstern usw.)Dialog mit OK/Abbrechen Verhalten in C#/WPF mit Datenbindung

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; } 
} 

auf dem Hauptfenster der Anwendung gibt es eine ComboBox an die Personen-Sammlung Bindung:

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

Jetzt möchte ich einen Dialog zu schaffen, in dem der Benutzer ist in der Lage, Personen mit dem bekannten O. hinzuzufügen/zu entfernen/zu bearbeiten K/Verhalten der Schaltfläche Abbrechen. Kann das einfach sein? Eine wichtige Sache ist, dass die Elemente in ComboBox nicht von den Änderungen betroffen sein dürfen, die der Benutzer vor dem Drücken von OK vornimmt.

Vielen Dank im Voraus!

Edit: Ich denke ich sollte darauf hinweisen, dass ich nicht eine bestimmte Person im Dialog bearbeiten möchte, sondern die ganze Personenliste.

Antwort

3

Hinzufügen und Entfernen sind einfach genug, da es nur passiert, wenn Sie auf OK klicken.

Zum Bearbeiten Sie weitere Optionen:

  1. Machen PersonIClonable implementieren, übergeben in einer geklonten Kopie des Person Sie bearbeiten, auf das Bearbeiten-Formular gebunden zu sein, dann die entsprechende Person wechseln out in Ihrem Persons Sammlung, wenn Sie fertig sind. Dies macht das Bearbeitungsformular weniger kompliziert und mehr WPFey.

  2. Verwenden Sie keine Bindung auf Ihrem Bearbeitungsformular, nur eine manuelle Synchronisierung zwischen den Steuerelementen und der Person übergeben, wenn Sie fertig sind. Mindestens WPFey.

  3. Eine Kombination aus 1 und 2 - die Bearbeitung von Formulareigenschaften, die die Eigenschaften von Person Spiegel hat und an ihre Kontrollen gebunden, dann synchronisieren Sie die Person mit den Eigenschaften der Form, wenn Sie fertig sind.