如何在 C# 中创建对象的绑定副本?

How to create a binded copy of an object in c#?

我有一个 class Employee 的对象(我们称它为 Alice),我想创建该对象的一个​​副本(我们称它为 Alice_again),这样如果我更改 Alice , Alice_again 的属性也会改变。基本上是创建一个对象的副本,其属性绑定到原始对象。

编辑

我有两个不同的 Employee ObservableCollection(Employee 是用户控件)并且都包含相同的 Employee 对象,我想显示每个 ObservableCollection 一次。为此我正在使用 ItemsControl 并且我已经将 ItemsControl 的 ItemsSource 绑定到这些 ObservableCollection 并且正如我读到的 link 给定的对象可能只在给定的逻辑树中出现一次,所以我试图创建一个对象的副本,但我不想在有更新时更新两个副本。

您不需要创建副本。

由于 ItemsSource 集合中的元素不应该是视觉对象,因此两个或多个源集合可能包含对相同对象的引用。

因此,两个 ItemsControl 的 ItemTemplate 中的两个不同 UI 元素将合法地绑定到同一数据项对象。

object may only be present in a given logical tree once

逻辑树是 UI 个元素的树。此树中不包含不同类型的元素。
对于源集合中的每个项目,将创建其自己的 ContentPresenter,这将包含在父 ItemsControl 的逻辑树中。
每个 ItemsControl 从 ContentPresenter 创建自己的集合。
因此,不同的 ContentPresenters 将在不同的 ItemsControls 中为相同的源项目创建,这不会产生任何问题。
您甚至可以在同一集合中多次包含同一项目。 并且对于这个元素的每个位置,都会创建它自己的 ContentPresenter。

dataTemplate has buttons whose content is binded to properties of Employee

数据模板实际上是一个用于创建 UI 元素的工厂。 当为每个元素应用模板时,将创建其自己独特的 UI 个元素。