페이지 행의 복제·삭제도 호버할 때만 표시

컨트롤 행의 눈·자물쇠는 호버 규칙으로 바꿔 놓고 페이지 행 버튼만 상시 노출이라
목록 우측이 들쭉날쭉했다. 같은 규칙으로 맞춘다.

버튼 각각이 아니라 묶음(StackPanel)에 거는 이유가 있다 — 삭제 버튼은 CanDelete 에
Visibility 를 물려 있는데 인스턴스의 지역 값이 스타일 트리거를 이기므로, 버튼마다 걸면
삭제만 상시 노출된다. 바깥을 접으면 둘 다 숨고, 펴지면 삭제는 원래대로 CanDelete 를 따른다.

되돌리기가 번거로운 '페이지 삭제'가 항상 노출돼 있지 않게 되는 부수 효과도 있다.

회귀: 테스트 124/124, 편집 스모크 실패 0, DB 왕복 1,271건 diff 0/예외 0,
종이 렌더 P062 바이트 동일.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Msystech
2026-08-13 09:08:13 +09:00
co-authored by Claude Opus 5
parent b47c7af8df
commit bd0d055e0d
2 changed files with 19 additions and 1 deletions
@@ -798,6 +798,23 @@
</Style.Triggers> </Style.Triggers>
</Style> </Style>
<!--
레이어 행 우측 동작 버튼 묶음(페이지 복제·삭제) — 눈·자물쇠와 같은 규칙으로 호버할 때만 보인다.
묶음(StackPanel)에 거는 이유: 삭제 버튼은 자체적으로 CanDelete 에 Visibility 를 물려 있는데,
인스턴스의 지역 값은 스타일 트리거를 이기므로 버튼마다 걸면 삭제만 상시 노출된다.
바깥을 접으면 둘 다 숨고, 펴지면 삭제는 원래대로 CanDelete 를 따른다.
되돌리기가 번거로운 '페이지 삭제'가 상시 노출되지 않는 부수 효과도 있다.
-->
<Style x:Key="LayerRowActions" TargetType="StackPanel">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
<!-- <!--
접기/펼치기 셰브론 — 켜짐(=펼침)이 기본 상태라 IsChecked 채움이 들어가면 항상 눌린 것처럼 보인다. 접기/펼치기 셰브론 — 켜짐(=펼침)이 기본 상태라 IsChecked 채움이 들어가면 항상 눌린 것처럼 보인다.
방향이 이미 상태를 말해 주므로 채움은 빼고 호버 반응만 남긴다. 방향이 이미 상태를 말해 주므로 채움은 빼고 호버 반응만 남긴다.
@@ -131,7 +131,8 @@
</Style.Triggers> </Style.Triggers>
</Style> </Style>
</DockPanel.Style> </DockPanel.Style>
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal"> <StackPanel DockPanel.Dock="Right" Orientation="Horizontal"
Style="{StaticResource LayerRowActions}">
<Button Style="{StaticResource Subtle}" Width="24" Height="22" Padding="0" <Button Style="{StaticResource Subtle}" Width="24" Height="22" Padding="0"
Margin="1,0,0,0" Click="OnPageDuplicateClick" ToolTip="페이지 복제" Margin="1,0,0,0" Click="OnPageDuplicateClick" ToolTip="페이지 복제"
Content="{Binding Source=copy, Converter={StaticResource IconName}, ConverterParameter=13|B.Muted}"/> Content="{Binding Source=copy, Converter={StaticResource IconName}, ConverterParameter=13|B.Muted}"/>