WPFのGridに動的にコンテンツを設定する際、前のコンテンツが残ってしまうのは、既存のコンテンツをクリアしていないことが原因です。同じ場所に新しいコンテンツを追加する前に、前のコンテンツを削除するようにしましょう。
例えば、Gridの指定したセルにコンテンツを動的に追加するコードが以下のようにある場合:
grid.Children.Add(newContent);
Grid.SetRow(newContent, row);
Grid.SetColumn(newContent, column);
同じ場所に新しいコンテンツを追加する前に、指定した場所に既にコンテンツがあるか確認し、もしあれば削除します。以下のように記述してみてください:
// 指定したセルにある既存のコンテンツを削除
var existingContent = grid.Children
.OfType<UIElement>()
.FirstOrDefault(e => Grid.GetRow(e) == row && Grid.GetColumn(e) == column);
if (existingContent != null)
{
grid.Children.Remove(existingContent);
}
// 新しいコンテンツを追加
grid.Children.Add(newContent);
Grid.SetRow(newContent, row);
Grid.SetColumn(newContent, column);
このように、existingContentを確認して削除してから新しいコンテンツを追加することで、前のコンテンツが残るのを防ぐことができます。


コメント