본문 바로가기

c#

WPF static Resource 와 dynamic Resource의 차이점

리소스를 설정해줍니다.

 리소스 설정
 <Window.Resources>
        <RadialGradientBrush x:Key="myGradientBrush">
            <GradientStop Color="Green" Offset="0"/>
            <GradientStop Color="Blue" Offset="2"/>
        </RadialGradientBrush>
    </Window.Resources>

 

wpf 의 리소스는 객체에 대한 값을 지정하여 재사용, 사용하기 위해서 사용합니다.

1.Static Resource 

컴파일 타임에 로드됩니다.

처음 참조해 설정한 값이 변경 될일이 없는 경우 사용합니다.

StaticResource를 통해 정적으로 등록합니다.

        <Grid Background="{StaticResource myGradientBrush}"></Grid>

정적 리소스로 실행 했을때의 화면

 

2.Dynamic Resource 

런타임에 로드됩니다.

변경이 일어날때 사용합니다.

참조된 리소스가 즉시 사용 되지 않을 경우 사용합니다.

리소스가 변경될 때마다 다시 참조하여 가져오기 때문에 정적 리소스보다 성능의 저하가 있을 수 있습니다.

 DynamicResource를 통해 동적으로 등록합니다.

        <Grid Background="{DynamicResource myGradientBrush}"></Grid>

아래 코드를 추가하여 동적리소스에 해당 설정 정보가 바인딩 되게 해줍니다.

    동적리소스 변경 로직
    RadialGradientBrush radialGradientBrush = new RadialGradientBrush(Colors.Orange, Colors.Pink);
    this.Resources["myGradientBrush"] = radialGradientBrush;

 

주황색 노랑색의 화면이 출력됨

 

정적리소스를 사용하면 위의 로직이 추가되어도 동일하게 리소스에 설정된 초록 파랑 배경이 출력되고

동적리소스를 사용하면 변경되는 값이 세팅이되어 출력됩니다.