2009-03-17 16 views
2

私のAppクラスでは、次のようなオブジェクトのコレクションがあります。 (CollectionはAppクラスにあります。広い別のウィンドウで、など)アプリケーションのメインウィンドウでデータバインディングを使用してC#/ WPFでOK/Cancelビヘイビアを使用するダイアログ

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

、人のコレクションに結合ComboBoxがあります:

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

今私は、ダイアログを作成したい、その中ユーザは、よく知られているOの人を追加/削除/編集することができるK /キャンセルボタンの動作。これは簡単にダウンできますか?重要なことの1つは、ComboBoxの項目が、ユーザーが[OK]を押す前に行っている変更の影響を受けてはならないことです。

ありがとうございます!

編集:私はダイアログ内の特定の人物を編集するのではなく、人物のリスト全体を編集したいと考えています。

答えて

3

追加と削除は、[OK]をクリックした場合にのみ発生するため、十分簡単です。

編集するための

、あなたより多くのオプション:

  1. Personは、あなたの中に適切なPersonを切り替え、その後、あなたが編集フォームに拘束されることに編集しているPersonのクローンコピーを渡し、IClonableを実装してください完了したらPersonsコレクション。これにより、編集フォームが複雑にならず、WPFeyが増えます。

  2. 編集フォームでバインドを使用しないでください。操作が完了したら、コントロールとPersonが手動で同期されます。最低WPFey。

  3. 編集フォームには、Personのプロパティを反映するプロパティがあり、コントロールにバインドされています。完了したらPersonとフォームのプロパティを同期させます。