WPF
[WPF] View 를 미리 랜더링 하는 방법
Chanhongv
2024. 7. 1. 09:23
WPF 에서 Content Control 을 하나 만들어서 Binding 값을 변경하여 View 를 변경하는 방법을 사용할 수 있다.
그런데 만약 특정 View 가 여러개의 컨트롤 (예를 들면 컨트롤을 포함한 큰 DataGrid) 을 보여줘야 한다면 그 View 를 Load 할때 느려지는 문제가 발생할 수 있다.
그래서 미리 Instance 를 불러오거나 ContentControl 에 Binding 을 먼저 시켰다가 변경하거나 하는 방법들을 사용해 보았지만 효과는 없었던 것 같다.
Chat GPT, 구글링 등을 해보았지만 명쾌한 해답이 나오지 않아서 스스로 생각한 방법을 적용해보기로했다.
추가 ContentControl 을 만들어서 View 를 집어넣고 Hidden 시키는 방법이다.
<Border Margin="15 5 15 0">
<Grid>
<ContentControl Content="{Binding PreRenderView}" Visibility="Hidden"/>
<ContentControl Content="{Binding CurrentView}"/>
</Grid>
</Border>
이렇게 하면 미리 Rendering 이 되기 때문에 느려지는 문제를 해결할 수 있다.
하지만 모든 View 에 대해서 사용한다면 메모리 사용량이 증가 할 수 있기 때문에 랜더링이 느린 View 만 이 방법을 사용하는 것이 좋겠다.
"2024-08-06" 추가 코멘트
- 결국 Hidden 되는 View 를 불러오는 데 소요되는 리소스가 있으므로 UI 가 느려지는 현상이 발생한다.
그래서 특정 View 에 진입할 때 로딩창을 띄우는것으로 변경했다.