试图找出一个简单的方法来通过或共享主窗口和对话框之间的一些数据。如何从对话框中检索数据?
我在主窗口中有一个变量集合,我想传递给一个对话框,以便它们可以被编辑。
我现在已经做了它的方式,是我在列表传递给对话框的构造函数:
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?因为现在,我认为我的变量正在被修改,因为它只是在做一个浅拷贝。
实际上,在WPF ShowDialog中返回一个空值 –
2011-01-12 07:37:18
当我写道“它不会反射回主窗口,直到用户实际点击”保存“为止。”我的意思是作为*意图*行为。我不需要也不希望它立即更新。感谢您的建议,虽然...也许对未来的一些对话框。 – mpen 2011-01-12 07:41:43