스타일의 TargetType 속성을 기본 클래스로 설정
나는 WPF를 조금 뒤적거리면서 내 윈도우의 모든 요소들이 같은 마진을 공유하길 원했다.마진을 가질 수 있는 모든 제어는 FrameworkElement에서 파생된다는 것을 알고 다음을 시도했습니다.
<Window.Resources>
<Style TargetType="{x:Type FrameworkElement}">
<Setter Property="Margin" Value="10" />
</Style>
</Window.Resources>
그리고 이건 안 돼요.모든 버튼에 적용할 수 있지만 버튼에서 파생된 모든 요소에는 적용할 수 없습니다.제가 뭔가를 놓치고 있는 건가요 아니면 단순히 불가능한 건가요?
WPF에 CSS를 사용하는 것이 좋은 생각이었을까?
유감스럽게도 기본 FrameworkElement 유형에는 스타일을 적용할 수 없습니다.WPF에서는 스타일을 쓸 수 있지만 WPF에서 파생된 컨트롤에는 적용되지 않습니다.이는 FrameworkElement의 하위 유형에도 적용되는 것으로 보입니다. 예를 들어 Button/ToggleButton/RepeatButton의 슈퍼 유형인 ButtonBase가 해당됩니다.
상속을 계속 사용할 수 있지만 명시적 상속을 사용해야 합니다.BasedOn적용할 제어 유형에 적용할 구문입니다.
<Window.Resources>
<Style TargetType="{x:Type FrameworkElement}">
<Setter Property="Margin" Value="10" />
</Style>
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type FrameworkElement}}" />
</Window.Resources>
이 문제는 스타일을 검색할 때 WPF가 현재 클래스가 파생된 모든 클래스를 검색하지 않는다는 것입니다.그러나 스타일에 키를 지정하고 공통 특성을 가지려는 모든 요소에 적용할 수 있습니다.스타일 지정 중인 요소에 적용할 수 없는 스타일로 특성이 지정된 경우 무시됩니다.
언급URL : https://stackoverflow.com/questions/1026635/setting-a-styles-targettype-property-to-a-base-class
'source' 카테고리의 다른 글
| 목록에서 쉼표를 사용할 수 있는 이유는 무엇입니까? (0) | 2023.04.13 |
|---|---|
| postgresql에서 상위 10개의 값을 얻는 방법 (0) | 2023.04.13 |
| SQL Server - 부울 리터럴? (0) | 2023.04.13 |
| 디렉토리를 .gitignore에 추가한 후 원격 저장소에서 제거합니다. (0) | 2023.04.13 |
| Objective-C에서 절대값으로 변환 (0) | 2023.04.13 |