[MAUI] Style 상속 받는 방법

Label에 기본으로 정의된 스타일을 상속 받아오고 싶습니다.

WPF의 경우 BasedOn="{StaticResource {x:Type ControlName}을 사용하면
범용으로 적용되던 스타일을 상속 받을 수 있었습니다.
MAUI는 StaticResource(string key)를 string으로 가져오기 때문에 x:Type을 사용하면 에러가 나더라구요.
(WPF는 Object로 가져 옵니다)

가이드 해주신 분에게 감사 인사 올립니다. :+1:


// x:Key  추가
<Style TargetType="Label"> => <Style x:Key="LabelStyle" TargetType="Label">
  ...
</Style>

// 범용 Label Style
<Style TargetType="Label" BasedOn="{StaticResource LabelStyle}"/>

<Style x:Key="CustomLabel" TargetType="Label" BasedOn="{StaticResource LabelStyle}">
  ...
</Style>

임시로 기본으로 적용 되던 Label에 x:key를 지정하고 상속 받아서
범용 Label Style를 정의했습니다.

1개의 좋아요

스타일에 Key가 주어지지 않는 경우 키가 없는 것이 아니라 타입이 키가 됩니다. 예를 들어

의 경우 x:key="LabelStyle"을 제거하고

BasedOn="{StaticResource Microsoft.Maui.Controls.Label}"을 대신 사용할 수 있습니다.

3개의 좋아요

x:Type 대신 xxx:TypeName을 하나 만들어서 사용할 수도 있겠네요.

3개의 좋아요

안녕하세요 @dimohy
좋은 의견 감사합니다.

BasedOn="{StaticResource Label}"으로하면 오류가나서 안되는 줄 알았습니다.
(Microsoft.Maui.Controls.Label}") Namespace를 정확히 지정 해주니 잘 돌아가네요 ^^

저의 경우 : Label Text에 FallbackValue가 적용이 안되고 Empty 값이 바인딩 되어서 나오네요.
( 새 프로젝트를 파서 실험할 때는 FallbackValue가 잘 적용이 되는데 차이점을 잘 모르겠네요.)

이 부분은 이해가 잘 안 됩니다.

1개의 좋아요

직접 구현해서 쓰면… 좀 편하지 않을까 했습니다. ^^

2개의 좋아요