본문 바로가기
Languages/C#

C# WPF 정적 및 동적 리소스(Static, Dynamic Resource)

by 반도체는 프로그래밍을 좋아해 2023. 4. 10.
728x90

WPF에서 정적 및 동적 리소스는 UI 요소의 디자인과 스타일링을 관리하는 데 중요한 역할을 합니다. 이 블로그 포스트에서는 정적 및 동적 리소스의 개념과 사용법에 대해 설명하겠습니다.

정적 리소스

정적 리소스는 애플리케이션에서 공통으로 사용하는 리소스로, 코드 또는 XAML 파일 내에서 정의됩니다. 이러한 리소스는 다른 요소에서 참조할 때 리소스 식별자를 사용하여 참조됩니다.

예를 들어, 다음은 Button 요소에 Background 속성에 대한 정적 리소스를 지정하는 방법입니다.

<Window.Resources>
    <SolidColorBrush x:Key="MyBrush" Color="Red"/>
</Window.Resources>

<Button Content="Click me" Background="{StaticResource MyBrush}"/>

위 예제에서 SolidColorBrush는 정적 리소스로 정의되었으며, Button 요소의 Background 속성에서 StaticResource 키워드를 사용하여 참조됩니다.

정적 리소스는 전역적으로 사용 가능하며, XAML 파일 내에서 언제든지 참조할 수 있습니다. 이러한 리소스는 애플리케이션을 로드할 때 생성되며 애플리케이션이 실행되는 동안 변경되지 않습니다.

동적 리소스

동적 리소스는 정적 리소스와 달리 런타임 중에 생성되고 변경될 수 있는 리소스입니다. 이러한 리소스는 애플리케이션에서 동적으로 생성되므로 정적 리소스보다는 덜 일반적으로 사용됩니다.

동적 리소스를 사용하려면 DynamicResource 키워드를 사용하여 참조합니다. 다음은 Button 요소에 대한 동적 리소스를 지정하는 방법입니다.

<Button Content="Click me" Background="{DynamicResource MyBrush}"/>

위 예제에서 Background 속성은 DynamicResource 키워드를 사용하여 MyBrush 리소스를 참조합니다. 이러한 방식으로 MyBrush 리소스가 런타임 중에 변경되면, Button 요소의 Background 속성도 함께 변경됩니다.

동적 리소스를 사용하는 경우, 해당 리소스가 변경될 때마다 해당 속성을 다시 계산해야 하므로 성능에 영향을 미칠 수 있습니다. 따라서 동적 리소스를 사용할 때는 주의해야 합니다.

결론

정적 리소스는 XAML 파일에 직접 작성되는 리소스로서, 애플리케이션이 시작될 때 메모리에 로드됩니다. 

동적 리소스는 코드에서 생성되는 리소스로서, 애플리케이션이 실행 중일 때 생성됩니다.

 둘 다 리소스를 중앙 집중화하고 재사용성을 높이는데 사용되며, 정적 리소스는 애플리케이션의 모든 곳에서 사용 가능하고, 동적 리소스는 코드에서 필요한 곳에서만 생성하여 사용합니다. 또한 정적 리소스는 변경할 수 없지만, 동적 리소스는 실행 중에 변경이 가능합니다.

728x90

'Languages > C#' 카테고리의 다른 글

C# 컬렉션 & 제네릭 컬렉션(Collection & Generic Collection)  (0) 2023.04.11
C# WPF brush  (0) 2023.04.10
C# WPF 병합된 리소스(Merged Resource)  (0) 2023.04.10
C# WPF Ellipse  (0) 2023.04.10
Day 9: MVVM 디자인 패턴 소개 및 구현  (0) 2023.04.10