带有数据绑定的C#/ WPF中带有OK / Cancel行为的对话框

时间:2009-03-17 14:47:26

标签: c# wpf data-binding

在我的App类中,我有一个对象集合,如下所示: (Collection在App类中,因为我需要在不同的窗口中对应用程序进行访问,等等。)

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绑定到Persons Collection:

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

现在我想创建一个对话框,用户可以使用众所周知的“确定/取消”按钮行为来添加/删除/编辑人员。这可以轻松下来吗?一件重要的事情是,在按下确定之前,ComboBox中的项目不得受用户所做更改的影响。

提前致谢!

编辑:我想我应该指出,我不想在对话框中编辑特定的人,而是整个人员列表。

1 个答案:

答案 0 :(得分:3)

添加和删除很简单,因为只有在单击“确定”时才会发生。

要进行编辑,您可以选择更多选项:

  1. 制作Person实施IClonable,传入您正在编辑的Person的克隆副本,以便在编辑表单上绑定,然后切换出相应的{{1}完成后,在Person集合中。}这使得编辑表单不那么复杂,而且更多WPFey。

  2. 不要在编辑表单上使用绑定,只需在控件和完成后传入的Persons之间进行手动同步。最少WPFey。

  3. 1和2的组合 - 编辑表单具有镜像Person的属性并绑定到其控件的属性,然后当您使用表单属性时同步Person “完成了。