gpt4 book ai didi

c# - 如何从对话框中检索数据?

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:08 25 4
gpt4 key购买 nike

只是想找出一种在主窗口和对话框之间传递或共享一些数据的简单方法。

我在主窗口中有一组变量,我想将它们传递给对话框以便对其进行编辑。

我现在的做法是将列表传递给对话框的构造函数:

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);
// ...

因此,当它们被编辑时,直到用户实际点击“保存”时,它才会反射(reflect)在主窗口中。

这是正确的做法吗?如果是这样,是否有一种简单的方法来深度复制 ObservableCollection?因为就目前而言,我认为我的变量正在被修改,因为它只是在进行浅拷贝。

最佳答案

我认为您在这里确实遵循了正确的方法,但您需要制作 ObservableCollection 的深拷贝。为此,请确保您的类“变量”是可克隆的(尝试实现 ICloneable)

foreach(var item in vars)
{
Variables.Add((Variable)item.Clone());
}

关于c# - 如何从对话框中检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4666229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com