WPF Material Design 5.0.0이상 버전 업데이트 내용

by westAhn

WPF Material Design 라이브러리가 5.0.0버전으로 업데이트(2024.02.22)되었다. 기존 버전(4.9.0이하) 버전과 비교하여 변경된 부분이 상당히 많아 업데이트 버전(5.0.0이상)을 이용하고자 할 때는 일부 코드 수정이 필요한데 그렇다면 어떤 부분이 변경 되었는지 알아보자. 아래 이미지의 왼쪽은 기존 버전(4.9.0이하)버전 Main화면이고, 오른쪽은 업데이트 된 버전(5.0.0이상)의 Main화면이다.

Material Design Main화면
Material Design Main화면
MaterialDesign 5.0.0버전 이상인 Main 화면
MaterialDesign 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 사용 방법은 아래와 같다.

  1. 모든 Brush의 Resource는 MaterialDesign.Brush.로 시작한다.
  2. 테마 색상은 MaterialDesign.Brush.<Primary|Secondary>.<Light|Dark>형식을 따른다. 글자 색은 .Foreground 접미사를 추가하여 사용한다. 예를 들어 MaterialDesign.Brush.Secondary.Light 또는 MaterialDesign.Brush.Primary.Foreground와 같이 사용하면 된다.
  3. 모든 Brush의 Accent는 Secondary으로 변경되었다.

기존에 사용하던 Brush를 계속 사용하고자 한다면 App.xaml에 아래와 같이 코드를 추가하여 사용한다. 하지만 아래의 코드 사용은 향후 제거 될 수 있다고 하니 유의하여 사용하도록 한다.

XML
<ResourceDictionarySource="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ObsoleteBrushes.xaml"/>

Style 이름 변경

  • 모든 “Accent”명이 “Secondary”로 대체되었으며 더 이상 사용되지 않는 스타일은 모두 제거되었다.
  • “MaterialDesignNavigatilRailTabControl”오타는 “MaterialDesignNavigationRailTabControl”로 수정되었다.

기존에 사용하던 Style을 계속 사용하고자 한다면 App.xaml에 아래와 같이 코드를 추가하여 사용한다. 하지만 아래의 코드 사용은 향후 제거 될 수 있다고 하니 유의하여 사용하도록 한다.

XML
<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’ 접미사로 변경되었다. 대부분의 경우 이 변경은 잘 이루어지지만, 확장 메서드를 정적 메서드로 직접 호출하는 경우에는 영향을 받을 수 있다.

Leave a Comment