【发布时间】:2014-06-08 16:44:50
【问题描述】:
我有一个选项卡控件,当用户想要添加到它时,我想复制几个已经存在的元素(不仅仅是引用它们)。现在,到目前为止,我只是硬拷贝了我想要的变量。但是我在自动调整大小代码中遇到了一个裁剪器——也就是说,在调整窗口大小时,复制的元素明显落后于原始元素。此外,随着列表的增长,继续复制我需要复制的每个元素是不可行的。有什么方法可以用来复制 WPF 控件吗?现在,这只是一个文本框和一个选项卡项。
【问题讨论】:
我有一个选项卡控件,当用户想要添加到它时,我想复制几个已经存在的元素(不仅仅是引用它们)。现在,到目前为止,我只是硬拷贝了我想要的变量。但是我在自动调整大小代码中遇到了一个裁剪器——也就是说,在调整窗口大小时,复制的元素明显落后于原始元素。此外,随着列表的增长,继续复制我需要复制的每个元素是不可行的。有什么方法可以用来复制 WPF 控件吗?现在,这只是一个文本框和一个选项卡项。
【问题讨论】:
我不太清楚你要做什么,但如果你想要一个与现有控件实例相同的新实例,你可以使用 XamlWriter 和 XamlReader 来序列化/反序列化控件:
MyControl copy = XamlReader.Parse(XamlWriter.Save(controlInstance)) as MyControl;
【讨论】:
我可能无法理解您的问题,但是您可以创建一个自定义 UserControl,并且每当您需要添加新控件时,只需创建该控件的新实例并将其添加到您的场景中,这样您就可以使用DataContext 帮助您进行数据绑定,您可以从控制复制中使用它:
MyControl newControl = new MyControl { DataContext = controlToCopy.DataContext };
myGrid.Children.Add(newControl);
或类似的...
或者你需要它比这更有活力吗?
【讨论】: