【发布时间】:2011-01-12 07:17:09
【问题描述】:
只是想找出一种简单的方法在主窗口和对话框之间传递或共享一些数据。
我的主窗口中有一组变量,我想将它们传递给对话框以便对其进行编辑。
我现在做的方式,是将列表传递给对话框的构造函数:
private void Button_Click(object sender, RoutedEventArgs e)
{
var window = new VariablesWindow(_templateVariables);
window.Owner = this;
window.ShowDialog();
if(window.DialogResult == true)
_templateVariables = new List<Variable>(window.Variables);
}
然后在那里,我想我需要深度复制列表,
public partial class VariablesWindow : Window
{
public ObservableCollection<Variable> Variables { get; set; }
public VariablesWindow(IEnumerable<Variable> vars)
{
Variables = new ObservableCollection<Variable>(vars);
// ...
这样当它们被编辑时,它不会在用户真正点击“保存”之前反映在主窗口中。
这是正确的方法吗?如果是这样,是否有一种简单的方法来深度复制 ObservableCollection?因为就目前而言,我认为我的变量正在被修改,因为它只是做一个浅拷贝。
【问题讨论】: