克隆自定义UserControl C#WPF - Easiet Way(浅拷贝)

时间:2012-11-19 09:32:49

标签: c# wpf clone

您好我想要克隆(Shallow Clone)自定义UserControl,如:

ucButton uc;
ucButton uc2;
uc = uc2;

当我这样做时,编译器也希望我从画布中移除旧实例(uc)。

使用:

Canvas1.Children.Add(uc)

Canvas2.Children.Add(uc2)

任何建议?

提前致谢

1 个答案:

答案 0 :(得分:1)

可悲的是,我认为没有一种简单的方法可以实现:如果您的用户控件包含其他引用类型,它们应该是通用的,还是应该复制它们?

此外,您将无法获得UserControl上附加的依赖项属性的完整列表。

Personnaly,我会将我的用户控件封装在我的xaml资源中的DataTemplate中,并根据需要从DataTemplate创建usercontrol的新实例。

<DataTemplate x:Key="ucButton">
  <myControls:ucButton ... />
</DataTemplate>

在您的代码中,从资源中获取模板,然后load the content

var uc = template.LoadContent() as UserControl;
var uc2 = template.LoadContent() as UserControl;

我知道这并不是你想要做的。如果从xaml实例化不是一个选项,我的解决方案将无法工作。