Silverlight:将相同的用户控件添加到多个 Canvas

标签 silverlight canvas user-controls containers

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

有没有办法在不创建 MyUserControls 的新(重复)实例的情况下执行此操作?如果不是,保持 MyUserControls 的重复实例同步的最佳策略是什么?

最佳答案

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

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

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

关于Silverlight:将相同的用户控件添加到多个 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880318/

相关文章:

c# - 如何将 Silverlight DLL 插入 WPF 应用程序

c# - 指南针 UI 和指针

animation - Silverlight - 动画贝塞尔曲线画线?

silverlight - 什么样的展示设计模式适合HTML5开发?

javascript - 将数据转换为屏幕坐标

android - 在 Canvas 绘图上设置触摸监听器

javascript - 无法使用 Canvas 读取 null 的属性 'getContext'

Asp.net session 变量混淆

iphone - 根据用户请求杀死 iOS 应用程序

c# - 传递控件的正确方法是什么?