【问题标题】:Silverlight: Add same UserControl to more than one CanvasSilverlight:将相同的 UserControl 添加到多个 Canvas
【发布时间】:2009-12-10 11:17:38
【问题描述】:

我有一堆用户控件('MyUserControl'),我想让用户手动添加到一个或多个画布中。 UserControl 的一个实例不能是多个容器的子元素(否则会抛出“System.InvalidOperationException:元素已经是另一个元素的子元素。”)。

有没有办法在不创建 MyUserControls 的新(重复)实例的情况下做到这一点?如果没有,保持 MyUserControls 的重复实例同步的最佳策略是什么?

【问题讨论】:

    标签: silverlight canvas user-controls containers


    【解决方案1】:

    您不能将同一控件(任何控件)实例添加为多个父级的子级。您将需要创建用户控件的多个实例并将每个实例放在其自己的父级上。

    如果您需要保持它们显示的数据同步,那么您应该将该数据存储在与用户控件本身分开的对象中,您将只有一个实例。通常,您会将此数据对象分配给每个用户控件的 DataContext 属性,然后用户控件的各个组件部分可以使用数据绑定获取它们的数据。

    如果您确保您的数据对象正确实现INotifyPropertyChanged,那么当一个用户控件对数据进行更改时,它将反映在引用同一数据对象的所有其他用户控件中。

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多