WPF でカード ゲームを作成しようとすると、次のエラーが表示されます: 指定されたビジュアルは既に別のビジュアルの子であるか、CompositionTarget のルートです。リストビューを含むウィンドウがあります(handListviewという名前)。リストビューの itemssource はに設定されています
ObservableCollection<System.Windows.Controls.Image>
_hand と呼ばれます。
画像をホバーすると、マウスムーブ イベントでホバーした画像ソースを再生キャンバスの横にある Image コントロール (LargeCardPreview と呼ばれる) .source に追加することで、ホバーした画像の拡大が表示されます。
画像をダブルクリックすると、その画像が _hand から削除され、子要素として playCanvas という再生キャンバスに追加されます。(私は playCanvas.Children.Add を使用します)。
ここで問題が発生します。画像をダブルクリックすると、_hand コレクションからカードが削除され (最初は、要素がコレクションにバインドされているため、HandListView から要素が切断されると考えられていました)、「OnCardPlayed」イベントがトリガーされます。 . この場合でも、カードを playCanvas.Children コレクションに追加します。しかし、その後エラーが発生します。
LargeImagePreview がブロックしているせいかもしれないと思ったので、ソースを Null に設定しました。変化なし。
_hand observablecollection からカードを削除しても、イメージがすぐに切断されないためだと思います。では、強制的に切断するにはどうすればよいでしょうか。
私の質問が十分に明確であることを願っています。