Unnamed Skill

HTML/CSS를 WPF CustomControl XAML로 변환할 때 필요한 가이드. CSS 애니메이션, overflow 클리핑, pseudo-element, 회전 요소 등을 WPF로 변환할 때 발생하는 일반적인 실수와 올바른 패턴을 제공한다. 다음 상황에서 사용: (1) HTML/CSS를 WPF XAML로 변환, (2) CSS 애니메이션을 WPF Storyboard로 변환, (3) CSS border-radius + overflow: hidden을 WPF 클리핑으로 구현, (4) CSS ::before/::after pseudo-element를 WPF로 구현, (5) CSS transform: rotate를 WPF RotateTransform으로 변환

$ インストール

git clone https://github.com/christian289/wpf-styling-pratice /tmp/wpf-styling-pratice && cp -r /tmp/wpf-styling-pratice/.claude/skills/html-css-to-wpf-xaml ~/.claude/skills/wpf-styling-pratice

// tip: Run this command in your terminal to install the skill


name: html-css-to-wpf-xaml description: HTML/CSS를 WPF CustomControl XAML로 변환할 때 필요한 가이드. CSS 애니메이션, overflow 클리핑, pseudo-element, 회전 요소 등을 WPF로 변환할 때 발생하는 일반적인 실수와 올바른 패턴을 제공한다. 다음 상황에서 사용: (1) HTML/CSS를 WPF XAML로 변환, (2) CSS 애니메이션을 WPF Storyboard로 변환, (3) CSS border-radius + overflow: hidden을 WPF 클리핑으로 구현, (4) CSS ::before/::after pseudo-element를 WPF로 구현, (5) CSS transform: rotate를 WPF RotateTransform으로 변환

HTML/CSS → WPF XAML 변환 가이드

CSS → WPF 핵심 매핑 테이블

CSS / AvaloniaUIWPF 구현 방법참조
overflow: hidden + border-radiusBorder.Clip + RectangleGeometry (RadiusX/Y + MultiBinding)clipping.md
position: absolute (회전 요소)Canvas + Canvas.Left/Toplayout.md
animation-duration: 3sDuration="0:0:3" 인라인animation.md
height: 130% (회전 요소)Converter로 동적 계산 (배율 2.0)transform.md
::before, ::afterCanvas 내 요소, 선언 순서로 z-orderlayout.md
z-index선언 순서 또는 Panel.ZIndexlayout.md
중앙 정렬 콘텐츠Canvas 밖 Grid에서 Alignment 적용layout.md
gap / Spacing각 요소에 Margin 속성 적용wpf-limitations.md
BooleanToVisibilityConverter.DefaultStaticResource 또는 커스텀 싱글톤wpf-limitations.md
Trigger로 Transform 속성 변경Property Path (UIElement.RenderTransform).(Type.Property)wpf-limitations.md
CornerRadius.Empty<CornerRadius>0</CornerRadius> 명시wpf-limitations.md
CSS 변수 --name 주석-- 제거하여 [name] 형식 사용wpf-limitations.md

핵심 규칙 요약

1. Duration은 항상 인라인

<!-- ✅ -->
<DoubleAnimation Duration="0:0:3" />
<!-- ❌ StaticResource 바인딩 불가 -->

2. 둥근 모서리 클리핑은 Border.Clip + RectangleGeometry

<Border CornerRadius="20">
    <Border.Clip>
        <RectangleGeometry RadiusX="20" RadiusY="20">
            <RectangleGeometry.Rect>
                <MultiBinding Converter="{x:Static local:SizeToRectConverter.Instance}">
                    <Binding Path="ActualWidth" RelativeSource="{RelativeSource AncestorType=Border}" />
                    <Binding Path="ActualHeight" RelativeSource="{RelativeSource AncestorType=Border}" />
                </MultiBinding>
            </RectangleGeometry.Rect>
        </RectangleGeometry>
    </Border.Clip>
</Border>

3. 회전 요소는 Canvas 내 배치

<Canvas>
    <Rectangle Canvas.Left="45" Canvas.Top="{Binding ...}" RenderTransformOrigin="0.5,0.5">
        <Rectangle.RenderTransform>
            <RotateTransform Angle="0" />
        </Rectangle.RenderTransform>
    </Rectangle>
</Canvas>

4. ContentPresenter는 Canvas 밖 Grid에 배치

<Grid>
    <Canvas><!-- 회전 요소들 --></Canvas>
    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>

참조 문서

파일내용
references/index.md전체 케이스 목록 (빠른 검색용)
references/clipping.md클리핑 관련 실수 (Grid.Clip, OpacityMask, ClipToBounds)
references/animation.md애니메이션/Duration 관련
references/layout.mdCanvas/Grid/정렬, pseudo-element 관련
references/transform.md회전/높이 계산 관련
references/converters.md필수 Converter 패턴
references/wpf-limitations.mdWPF 제한사항 (Spacing, CornerRadius.Empty 등)
references/case-template.md새 케이스 추가용 템플릿