반응형
WPF에서 중첩 요소 스타일 지정
예를 들어 MenuItems가있는 ContextMenu와 같은 중첩 된 요소 구조가 있다고 가정합니다.
<ContextMenu Style="{StaticResource FooMenuStyle}">
<MenuItem Style="{StaticResource FooMenuItemStyle}"/>
...
</ContextMenu>
스타일이나 템플릿을 ContextMenu 또는 MenuItem 요소에 쉽게 적용 할 수 있습니다. 그러나 MenuItem 스타일이 Menu 스타일에 속하면 모든 MenuItem 요소에 추가하는 것이 매우 번거롭고 중복됩니다.
자동으로 자식 요소에 적용하는 방법이 있습니까? 다음과 같이 간단히 작성할 수 있습니다.
<ContextMenu Style="{StaticResource FooMenuStyle}">
<MenuItem/>
...
</ContextMenu>
FooMenuStyle이 MenuItem 요소를 포함하는 스타일을 지정할 수 있다면 깔끔 할 수 있지만 불가능한 것 같습니다.
편집 : 내가 ItemContainerStyle을 알지 못했고 의도가 일반적인 솔루션을위한 것이기 때문에 메뉴 예제는 아마도 오해의 소지가 있습니다. 두 가지 답변을 바탕으로 일반적인 변형 하나와 ItemContainerStyle 등에 대한 두 가지 솔루션을 찾았습니다.
<Style x:Key="FooMenuItem" TargetType="{x:Type MenuItem}">
...
</Style>
<Style x:Key="FooMenu" TargetType="{x:Type ContextMenu}">
<!-- Variant for specific style attribute -->
<Setter Property="ItemContainerStyle"
Value="{StaticResource FooMenuItem}"/>
<!-- General variant -->
<Style.Resources>
<Style TargetType="{x:Type MenuItem}"
BasedOn="{StaticResource FooMenuItem}"/>
</Style.Resources>
</Style>
<ContextMenu Style="{StaticResource FooMenu}">
<MenuItem/>
</ContextMenu>
<ContextMenu>
<ContextMenu.Resources>
<Style TargetType="{x:Type MenuItem}">
<!--Setters-->
</Style>
</ContextMenu.Resources>
<MenuItem/>
<!--Other MenuItems-->
</ContextMenu>
스타일은 ContextMenu 내의 모든 MenuItem 개체에 적용됩니다.
원래 답변을 완성하기 위해 다음과 같이 부모 내부에 중첩 스타일을 추가하는 것이 더 명확하다고 생각합니다.
<Style x:Key="WindowHeader" TargetType="DockPanel" >
<Setter Property="Background" Value="AntiqueWhite"></Setter>
<Style.Resources>
<Style TargetType="Image">
<Setter Property="Margin" Value="6"></Setter>
<Setter Property="Width" Value="36"></Setter>
<Setter Property="Height" Value="36"></Setter>
</Style>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"></Setter>
</Style>
</Style.Resources>
</Style>
<ContextMenu ItemContainerStyle="{StaticResource FooMenuItemStyle}">
<MenuItem/>
</ContextMenu>
참고 URL : https://stackoverflow.com/questions/666269/styling-nested-elements-in-wpf
반응형
'developer tip' 카테고리의 다른 글
이전 버전의 Android Studio에서 설정을 어디에서 가져 오나요? (0) | 2020.12.10 |
---|---|
각도 필터를 조건부로 만들기 (0) | 2020.12.10 |
닫기 버튼을 클릭 할 때 닫는 대신 양식 숨기기 (0) | 2020.12.10 |
iOS의 활동 수명주기에 해당하는 것은 무엇입니까? (0) | 2020.12.10 |
명령 줄에서 데이터베이스 만들기 (0) | 2020.12.10 |