在我的 App 类中,我有一个对象集合,如下所示: (集合位于 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; }
}
在应用程序的主窗口上,有一个与 Persons 集合绑定(bind)的 ComboBox
:
<ComboBox ItemsSource="{Binding Source={x:Static Application.Current}, Path=Persons}" DisplayMemberPath="Name"/>
现在我想创建一个对话框,用户可以在其中使用众所周知的“确定”/“取消”按钮行为添加/删除/编辑人员。这能轻易倒下吗?一件重要的事情是,ComboBox
中的项目不得受到用户在按“确定”之前所做的更改的影响。
提前致谢!
编辑:我想我应该指出,我不想编辑对话框中的特定人员,而是编辑整个人员列表。
最佳答案
添加和删除非常简单,因为只有单击“确定”时才会发生。
对于编辑,您有更多选择:
使
Person
实现IClonable
,传入您正在编辑的Person
的克隆副本以绑定(bind)在编辑表单上,然后在完成后在Persons
集合中切换相应的Person
。这使得编辑表单变得不那么复杂并且更加 WPFey。不要在编辑表单上使用绑定(bind),只需在完成后传入的控件和
Person
之间进行手动同步即可。最少 WPFey。1 和 2 的组合 - 编辑表单具有镜像
Person
属性的属性并绑定(bind)到其控件,然后同步Person
完成后使用表单的属性。
关于c# - 使用数据绑定(bind)的 C#/WPF 中具有确定/取消行为的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654552/