목차
WPF Material Design 라이브러리가 5.0.0버전으로 업데이트(2024.02.22)되었다. 기존 버전(4.9.0이하) 버전과 비교하여 변경된 부분이 상당히 많아 업데이트 버전(5.0.0이상)을 이용하고자 할 때는 일부 코드 수정이 필요한데 그렇다면 어떤 부분이 변경 되었는지 알아보자. 아래 이미지의 왼쪽은 기존 버전(4.9.0이하)버전 Main화면이고, 오른쪽은 업데이트 된 버전(5.0.0이상)의 Main화면이다.
Main Resource Dictionary 이름 변경
가장 주요한 변화는 main resource dictionary이름이 변경되었다. Material Design에는 Material Design 2 스타일과 Material Design 3 스타일을 지원한다. 기존 버전(4.9.0이하)에서는 “MaterialDesignTheme.Defaults.xaml”로 명명하여 사용하였지만 업데이트 된 버전(5.0.0.버전이상)에서는 “MaterialDesign2.Defaults.xaml”과 “MaterialDesign3.Defaults.xaml”중 하나를 선택하여 사용한다. 기존에 사용하였던 디자인을 그대로 사용하고자 할 때는 “MaterialDesign2.Defaults.xaml”를 사용하고 업데이트 된 디자인을 사용하고자 할 때는 “MaterialDesign3.Defaults.xaml”로 명명하여 사용한다.
Brush 이름 변경
새로운 Brush를 추가하고 개별 구성 요소를 쉽게 조정하기 위해서 Brush 이름이 변경되었다. 새 Brush 사용 방법은 아래와 같다.
- 모든 Brush의 Resource는 MaterialDesign.Brush.로 시작한다.
- 테마 색상은 MaterialDesign.Brush.<Primary|Secondary>.<Light|Dark>형식을 따른다. 글자 색은 .Foreground 접미사를 추가하여 사용한다. 예를 들어 MaterialDesign.Brush.Secondary.Light 또는 MaterialDesign.Brush.Primary.Foreground와 같이 사용하면 된다.
- 모든 Brush의 Accent는 Secondary으로 변경되었다.
기존에 사용하던 Brush를 계속 사용하고자 한다면 App.xaml에 아래와 같이 코드를 추가하여 사용한다. 하지만 아래의 코드 사용은 향후 제거 될 수 있다고 하니 유의하여 사용하도록 한다.
<ResourceDictionarySource="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ObsoleteBrushes.xaml"/>
Style 이름 변경
- 모든 “Accent”명이 “Secondary”로 대체되었으며 더 이상 사용되지 않는 스타일은 모두 제거되었다.
- “MaterialDesignNavigatilRailTabControl”오타는 “MaterialDesignNavigationRailTabControl”로 수정되었다.
기존에 사용하던 Style을 계속 사용하고자 한다면 App.xaml에 아래와 같이 코드를 추가하여 사용한다. 하지만 아래의 코드 사용은 향후 제거 될 수 있다고 하니 유의하여 사용하도록 한다.
<ResourceDictionarySource="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ObsoleteStyles.xaml"/>
ShadowAssist가 ElevationAssist로 대체
4.9.0 버전에서 ShadowAssist는 사용되지 않는다고 표시되었지만 5.0.0 버전에서는 완전히 제거되었다. 기존에 사용 중인 ShadowAssist를 수정하려면 ShadowAssist를 ElevationAssist로, ShadowDepth를 Elevation으로 수정하여 사용한다.
- ShadowDepth.Depth0 ⇒ Elevation.Dp0
- ShadowDepth.Depth1 ⇒ Elevation.Dp2
- ShadowDepth.Depth2 ⇒ Elevation.Dp3 또는 Elevation.Dp4
- ShadowDepth.Depth3 ⇒ Elevation.Dp7 또는 Elevation.Dp8
- ShadowDepth.Depth4 ⇒ Elevation.Dp12 또는 Elevation.Dp16
- ShadowDepth.Depth5 ⇒ Elevation.Dp16 또는 Elevation.Dp24
코드 일부 변경
모든 확장 메서드 클래스의 ‘Mixin’ 접미사가 ‘Extensions’ 접미사로 변경되었다. 대부분의 경우 이 변경은 잘 이루어지지만, 확장 메서드를 정적 메서드로 직접 호출하는 경우에는 영향을 받을 수 있다.