wpfでgridに動的にコンテンツを設定

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を確認して削除してから新しいコンテンツを追加することで、前のコンテンツが残るのを防ぐことができます。

コメント

タイトルとURLをコピーしました