代码之家  ›  专栏  ›  技术社区  ›  Puppy

以编程方式复制WPF控件

  •  8
  • Puppy  · 技术社区  · 15 年前

    我有一个tab控件,当用户想添加到它时,我想复制一些已经存在的元素(不仅仅是引用它们)。现在,到目前为止,我只是硬拷贝了我想要的变量。但是我在自动调整大小的代码中遇到了一个问题——也就是说,在调整窗口大小时,复制的元素明显落后于原始元素。另外,随着列表的增长,继续复制我需要复制的每个元素是不可行的。有什么方法可以用来复制WPF控件吗?现在,这只是一个文本框和一个选项卡项。

    2 回复  |  直到 15 年前
        1
  •  11
  •   Mark    15 年前

    我可能不理解你的问题,但你可以创建一个自定义的UserControl,每当你需要添加一个新的控件时,只需创建一个新的控件实例并将它添加到你的场景中,这样你就可以使用 DataContext 有助于数据绑定,您可以从复制时使用的控件:

    MyControl newControl = new MyControl { DataContext = controlToCopy.DataContext };
    myGrid.Children.Add(newControl);
    

    或者类似的。。。

    或者你需要它更具活力?

        2
  •  13
  •   John Bowen    15 年前

    我不太清楚您想做什么,但如果您希望新实例与现有控件实例相同,可以使用XamlWriter和XamlReader对控件进行序列化/反序列化:

    MyControl copy = XamlReader.Parse(XamlWriter.Save(controlInstance)) as MyControl;