2009-12-10 57 views
2

我有一羣UserControls('MyUserControl'),我想讓用戶手動添加到一個或多個Canvases中。 UserControl的一個實例不能是多個容器的子元素(否則會拋出'System.InvalidOperationException:元素已經是另一個元素的子元素')。Silverlight:將同一個UserControl添加到多個Canvas中

有沒有辦法做到這一點,而無需創建MyUserControls的新(重複)實例?如果不是,保持MyUserControls重複實例同步的最佳策略是什麼?

+0

一些代碼會幫助 – AnthonyWJones 2009-12-10 11:22:28

回答

4

您不能將控件(任何控件)的同一實例添加爲多個父級的子級。您將需要創建Usercontrol的多個實例並將它們分別放在其自己的父級上。

如果你需要保持它們顯示的數據同步,那麼你應該將這些數據存儲在一個與用戶控件本身不同的對象中,它的這個對象只有一個實例。通常,您可以將此數據對象分配給每個用戶控件的DataContext屬性,然後用戶控件的各個組件部分可以使用數據綁定來獲取其數據。

如果您確保您的數據對象正確地實現了INotifyPropertyChanged,那麼當一個用戶控件更改數據時,它將反映在引用同一數據對象的所有其他用戶控件中。

相關問題