bunta의 보조기억장치

[C# / WPF] ItemsControl의 Item 중첩 생성 문제 본문

프로그래밍/C#

[C# / WPF] ItemsControl의 Item 중첩 생성 문제

bunta 2024. 2. 20. 11:48
반응형

🤷‍♂️ 문제 발생

우선 Page에서 ItemsControl을 사용해서 List의 내용을 출력하려고 하였다.

그런데 다른 Page 이동 후 해당 Page로 돌아올 경우 기존에 있던 Item들이 제거되지 않고 중첩되어 생성되는 문제가 발생했다.

 

 

💡 문제 접근

1. ItemsControl.Items.Clear()로 삭제 시도

  - 디버그 모드 상에서는 Count가 0으로 나오지만 동일 문제 발생함

 

2. ItemSource로 사용되는 List를 Clear하기

  - List 자체는 초기화되었지만 여전히 Item이 살아있는 문제가 발생

 

문득 이전에 지정된 ItemSource가 살아있어서 그런게 아닐까 생각이 들었다.

그래서 Page가 Unload 될 때 Clear를 진행한 List를 다시 ItemSource로 지정해주니 문제가 해결되었다!

 

 

🔧 문제 해결

Page Unload 이벤트 발생 시에 ItemSource로 사용한 List를 우선 Clear시킨 다음 해당 List를 ItemsControl의 ItemSource로 재지정해주면 문제가 해결된다!

 

예시)

public void PageUnloaded(object sender, RoutedEventArgs e) {
    deviceInfos.Clear();	// ItemSource로 사용된 List Clear

    deviceLists.ItemsSource = deviceInfos;	// 초기화된 List를 ItemsControl의 ItemSource로 재지정
}
반응형
Comments