我正在尝试在 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 中取出卡片,图像也不会立即断开连接。那么如何强制断开连接呢?
希望我的问题足够清楚。