【发布时间】:2012-07-31 08:14:59
【问题描述】:
我正在尝试在 WPF 中创建纸牌游戏,但出现错误:指定的视觉对象已经是另一个视觉对象的子对象或 CompositionTarget 的根。我有一个带有列表视图的窗口(名为:handListview)。列表视图的 itemssource 设置为
ObservableCollection<System.Windows.Controls.Image>
叫_hand。
当我悬停图像时,它会通过 mousemove 事件将悬停的图像源添加到播放画布旁边的 Image 控件(称为 LargeCardPreview).source 来显示悬停图像的放大图。
当我双击一个图像时,我会将它从 _hand 中移除并作为一个子元素添加到名为 playCanvas 的播放画布中。 (我使用 playCanvas.Children.Add)。
这就是问题所在,当我双击图像时,我从 _hand 集合中删除了卡片(起初认为这会断开元素与 HandListView 的连接,因为它已绑定到集合),并触发“ OnCardPlayed”事件。在此,我什至将卡片添加到 playCanvas.Children 集合中。但后来我得到了错误。
我认为这可能是因为 LargeImagePreview 阻止了它,所以我将源设置为 Null。没有变化。
所以我猜是因为即使我从 _hand observablecollection 中取出卡片,图像也不会立即断开连接。那么如何强制断开连接呢?
希望我的问题足够清楚。
【问题讨论】:
标签: c# wpf image children disconnect