克隆自定义 UserControl C# WPF - 最简单的方法(浅复制)

问题描述 投票:0回答:1

我想克隆(浅克隆)自定义用户控件,例如:

ucButton uc;
ucButton uc2;
uc = uc2;

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

使用:

Canvas1.Children.Add(uc)

Canvas2.Children.Add(uc2)

有什么建议吗?

提前致谢。

c# wpf clone
1个回答
1
投票

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

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

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

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

在您的代码中,从资源中获取模板,然后加载内容

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

我知道这并不完全是您想要做的。如果不能选择从 xaml 实例化,我的解决方案将不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.