在我的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
中的项目不得受用户所做更改的影响。
提前致谢!
编辑:我想我应该指出,我不想在对话框中编辑特定的人,而是整个人员列表。
答案 0 :(得分:3)
添加和删除很简单,因为只有在单击“确定”时才会发生。
要进行编辑,您可以选择更多选项:
制作Person
实施IClonable
,传入您正在编辑的Person
的克隆副本,以便在编辑表单上绑定,然后切换出相应的{{1}完成后,在Person
集合中。}这使得编辑表单不那么复杂,而且更多WPFey。
不要在编辑表单上使用绑定,只需在控件和完成后传入的Persons
之间进行手动同步。最少WPFey。
1和2的组合 - 编辑表单具有镜像Person
的属性并绑定到其控件的属性,然后当您使用表单属性时同步Person
“完成了。