C# NET4.0重用UserControl的同一实例

C# NET4.0重用UserControl的同一实例,c#,wpf,.net-4.0,C#,Wpf,.net 4.0,我想将同一个用户控件实例显示两次。我试着做了以下几点: 并尝试在TabControl中使用它: 我收到了错误消息: “{”指定的元素已经是另一个元素的逻辑子元素。请先断开它的连接。“}” 我想达到的目标可能吗 谢谢,不是。如错误所示,给定对象只能在给定逻辑树中出现一次。这有助于确保逻辑树仍然是树 如果您使用的是MVVM模式(或者通常只是使用数据绑定),那么您可以将两个不同的UserControl绑定到同一个backing ViewModel/数据,以便这些控件的行为相同,并在相同的状态表

我想将同一个用户控件实例显示两次。我试着做了以下几点:


并尝试在TabControl中使用它:


我收到了错误消息: “{”指定的元素已经是另一个元素的逻辑子元素。请先断开它的连接。“}”

我想达到的目标可能吗


谢谢,

不是。如错误所示,给定对象只能在给定逻辑树中出现一次。这有助于确保逻辑树仍然是树

如果您使用的是MVVM模式(或者通常只是使用数据绑定),那么您可以将两个不同的UserControl绑定到同一个backing ViewModel/数据,以便这些控件的行为相同,并在相同的状态表示上操作。不过,您仍然需要两个不同的控件。

在WPF(和Silverlight)中,控件不能位于可视树中的多个位置。您可以做的是拥有两个独立的用户控件实例,但将它们的相关属性绑定到相同的底层源

例如,假设您有一个Contact对象,并且希望两个MyControl实例引用相同的FullName属性



如果您只希望一个控件出现在可视化树中的多个位置,但实际上不是交互式的,则可以使用“绘制”到另一个控件上。

您不能在两个位置使用同一个控件,但可以使其跳转,请参阅我的示例,了解如何执行此操作。

这就成功了。绑定到相同的datasouce(视图模型)干杯。