Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow 권한 팝업의 섹션/행 패딩·폰트·줄간격을 미세 조정해 스캔 속도 개선 - 슬래시 팔레트 하단 안내에 PgUp/PgDn/Home/End 키 이동 정보를 반영 - 좌측 기본 카테고리 라벨을 주제 선택/작업 선택으로 통일 - 입력 상단 컴포저(모델/프리셋/인라인 설정) 간격을 컴팩트하게 재정돈 - docs/UI_UX_CHECKLIST.md에 최신 점검 결과(운영모드 필터 18건, 전체 테스트 436건) 기록 - README.md, docs/DEVELOPMENT.md 이력 및 업데이트 시각(2026-04-04 12:33 KST) 갱신 - 빌드 복구 메모: WPF 임시 생성물 꼬임 발생 시 obj/bin 정리 후 정상 재생성 확인
1745 lines
118 KiB
XML
1745 lines
118 KiB
XML
<Window x:Class="AxCopilot.Views.ChatWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
|
|
Title="AX Copilot — AX Agent"
|
|
Width="1100" Height="760"
|
|
MinWidth="700" MinHeight="520"
|
|
WindowStyle="None"
|
|
UseLayoutRounding="True"
|
|
SnapsToDevicePixels="True"
|
|
Background="{DynamicResource LauncherBackground}"
|
|
ResizeMode="CanResizeWithGrip"
|
|
WindowStartupLocation="CenterScreen"
|
|
ShowInTaskbar="True"
|
|
Icon="pack://application:,,,/Assets/icon.ico">
|
|
|
|
<WindowChrome.WindowChrome>
|
|
<WindowChrome CaptionHeight="48"
|
|
CornerRadius="0"
|
|
GlassFrameThickness="0"
|
|
ResizeBorderThickness="6"/>
|
|
</WindowChrome.WindowChrome>
|
|
|
|
<Window.Resources>
|
|
<!-- 사이드바 버튼 -->
|
|
<Style x:Key="GhostBtn" TargetType="Button">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Padding" Value="8,6"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="Bd" Background="{TemplateBinding Background}"
|
|
CornerRadius="8" Padding="{TemplateBinding Padding}"
|
|
Opacity="1">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
|
|
<Setter TargetName="Bd" Property="Opacity" Value="0.85"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Opacity" Value="0.35"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- 탭 버튼 -->
|
|
<Style x:Key="TopTabBtn" TargetType="RadioButton">
|
|
<Setter Property="Foreground" Value="{DynamicResource SecondaryText}"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Padding" Value="18,6"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="RadioButton">
|
|
<Border x:Name="Bd" Background="Transparent"
|
|
CornerRadius="8" Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter x:Name="Cp" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource PrimaryText}"/>
|
|
</Trigger>
|
|
<!-- IsChecked를 뒤에 두어 호버보다 선택 상태가 항상 우선 적용 -->
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemSelectedBackground}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource PrimaryText}"/>
|
|
<Setter Property="FontWeight" Value="Bold"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Opacity" Value="0.3"/>
|
|
<Setter Property="Cursor" Value="Arrow"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<!-- 테두리 호버 버튼 (배경색 변경 없이 테두리만 표시) -->
|
|
<Style x:Key="OutlineHoverBtn" TargetType="Button">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="BorderBrush" Value="Transparent"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Padding" Value="8,6,10,6"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="Bd" Background="Transparent"
|
|
BorderBrush="Transparent"
|
|
BorderThickness="0"
|
|
CornerRadius="8" Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource ItemHoverBackground}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Opacity" Value="0.35"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<!-- 모든 드롭다운 메뉴는 코드-비하인드에서 커스텀 Popup으로 렌더링 -->
|
|
</Window.Resources>
|
|
|
|
<Border Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<!-- 축소 아이콘 바 (사이드바 닫힘 시 표시) -->
|
|
<ColumnDefinition x:Name="IconBarColumn" Width="0"/>
|
|
<!-- 사이드바 (열림 시 표시) -->
|
|
<ColumnDefinition x:Name="SidebarColumn" Width="270" MinWidth="0"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<!-- 미리보기 스플리터 -->
|
|
<ColumnDefinition x:Name="SplitterColumn" Width="0"/>
|
|
<!-- 미리보기 패널 (파일 생성 시 표시) -->
|
|
<ColumnDefinition x:Name="PreviewColumn" Width="0" MinWidth="0"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- ══ 축소 아이콘 바 (사이드바 닫힘 시) ══ -->
|
|
<Border x:Name="IconBarPanel" Grid.Column="0"
|
|
Background="{DynamicResource ItemBackground}"
|
|
Visibility="Collapsed">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="54"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="54"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 상단 아이콘들 -->
|
|
<StackPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center">
|
|
<Button Style="{StaticResource GhostBtn}" Padding="10,8"
|
|
Click="BtnNewChat_Click" ToolTip="새 대화"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="15"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Row="1" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,8,0,0">
|
|
<Button Style="{StaticResource GhostBtn}" Padding="10,8"
|
|
Click="BtnToggleSidebar_Click" ToolTip="검색"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="14"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
<Button Style="{StaticResource GhostBtn}" Padding="10,8"
|
|
Click="BtnCategoryDrop_Click" ToolTip="대화 주제"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="14"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
</StackPanel>
|
|
|
|
<!-- 하단: 사용자 이니셜 -->
|
|
<Button x:Name="BtnUserIconBar" Grid.Row="2" Style="{StaticResource GhostBtn}"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
ToolTip="" Padding="0"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<Border Width="32" Height="32" CornerRadius="16"
|
|
Background="{DynamicResource AccentColor}">
|
|
<TextBlock x:Name="UserInitialIconBar" Text="U" FontSize="13" FontWeight="Bold"
|
|
Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
</Button>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- ══════════════════════════════════════════════════════ -->
|
|
<!-- 좌측: 사이드바 -->
|
|
<!-- ══════════════════════════════════════════════════════ -->
|
|
<Border x:Name="SidebarPanel" Grid.Column="1"
|
|
Background="{DynamicResource ItemBackground}">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="52"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="50"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 헤더: 로고 + 새 대화 -->
|
|
<Grid Grid.Row="0" Margin="14,0">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<Border Background="{DynamicResource AccentColor}" CornerRadius="6"
|
|
Width="24" Height="24">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<TextBlock Text="AX Agent" FontSize="13.5" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
VerticalAlignment="Center" Margin="10,0,0,0"/>
|
|
</StackPanel>
|
|
<Button x:Name="BtnNewChat" Style="{StaticResource GhostBtn}"
|
|
HorizontalAlignment="Right" VerticalAlignment="Center"
|
|
Click="BtnNewChat_Click" ToolTip="새 대화 (Ctrl+N)"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="14"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
</Grid>
|
|
|
|
<!-- 검색 -->
|
|
<Border Grid.Row="1" Background="{DynamicResource HintBackground}"
|
|
CornerRadius="10" Margin="12,0,12,6" Padding="10,6">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="SearchBox" Background="Transparent" BorderThickness="0"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
CaretBrush="{DynamicResource AccentColor}" FontSize="11.5"
|
|
VerticalAlignment="Center" Margin="22,0,8,0"
|
|
TextChanged="SearchBox_TextChanged"/>
|
|
<Button x:Name="BtnConversationSort" Grid.Column="1"
|
|
Style="{StaticResource GhostBtn}"
|
|
Padding="8,3" MinWidth="54"
|
|
Margin="0,0,0,0"
|
|
VerticalAlignment="Center"
|
|
Click="BtnConversationSort_Click"
|
|
ToolTip="대화 정렬 기준 전환"
|
|
Visibility="Collapsed">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,5,0"/>
|
|
<TextBlock x:Name="ConversationSortLabel" Text="활동"
|
|
FontSize="11" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Button>
|
|
<Button x:Name="BtnRunningOnlyFilter" Grid.Column="2"
|
|
Style="{StaticResource GhostBtn}"
|
|
Padding="8,3" MinWidth="54"
|
|
Margin="6,0,0,0"
|
|
VerticalAlignment="Center"
|
|
Click="BtnRunningOnlyFilter_Click"
|
|
ToolTip="비활성"
|
|
Visibility="Collapsed"
|
|
IsEnabled="False">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,5,0"/>
|
|
<TextBlock x:Name="RunningOnlyFilterLabel" Text="진행"
|
|
FontSize="11" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Button>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 카테고리 드롭다운: "모든 주제 ▼" -->
|
|
<Border Grid.Row="2" Margin="12,0,12,4">
|
|
<Button x:Name="BtnCategoryDrop" Style="{StaticResource GhostBtn}"
|
|
HorizontalAlignment="Stretch" Padding="10,5"
|
|
Click="BtnCategoryDrop_Click">
|
|
<Grid HorizontalAlignment="Stretch">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="CategoryIcon" Text=""
|
|
FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center" Margin="0,0,8,0"/>
|
|
<TextBlock x:Name="CategoryLabel" Text="모든 주제"
|
|
FontSize="11.5" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="9"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
HorizontalAlignment="Right" VerticalAlignment="Center"/>
|
|
</Grid>
|
|
</Button>
|
|
</Border>
|
|
|
|
<!-- 탭별 좌측 메뉴 -->
|
|
<Border Grid.Row="3" Margin="12,0,12,6"
|
|
Background="{DynamicResource HintBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1"
|
|
CornerRadius="10"
|
|
Padding="10,8">
|
|
<StackPanel>
|
|
<StackPanel Orientation="Horizontal" Margin="0,0,0,4" Visibility="Collapsed">
|
|
<TextBlock x:Name="SidebarModeBadgeIcon" Text=""
|
|
FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<TextBlock x:Name="SidebarModeBadgeTitle" Text="Chat 메뉴"
|
|
FontSize="11.5" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel x:Name="SidebarChatMenu" Visibility="Visible">
|
|
<Border Cursor="Hand" Background="Transparent" CornerRadius="8"
|
|
Padding="8,5" Margin="0,0,0,3"
|
|
MouseLeftButtonUp="SidebarChatAll_MouseLeftButtonUp">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="1" Text="주제 탐색"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
FontSize="11.5" Margin="8,0,0,0" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="2" Text="" FontFamily="Segoe MDL2 Assets" FontSize="9"
|
|
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
|
|
</Grid>
|
|
</Border>
|
|
<Border x:Name="SidebarChatRunningRow" Cursor="Hand" Background="Transparent" CornerRadius="8"
|
|
Padding="8,5"
|
|
MouseLeftButtonUp="SidebarChatRunning_MouseLeftButtonUp"
|
|
Visibility="Collapsed">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="#22C55E" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="1" Text="진행 중 대화만 보기"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
FontSize="11.5" Margin="8,0,0,0" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="2" x:Name="SidebarChatRunningState" Text="OFF"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
FontSize="11" VerticalAlignment="Center"/>
|
|
</Grid>
|
|
</Border>
|
|
</StackPanel>
|
|
|
|
<StackPanel x:Name="SidebarCoworkMenu" Visibility="Collapsed">
|
|
<Border Cursor="Hand" Background="Transparent" CornerRadius="8"
|
|
Padding="8,5" Margin="0,0,0,3"
|
|
MouseLeftButtonUp="SidebarCoworkCategory_MouseLeftButtonUp">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="#3B82F6" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="1" Text="작업 유형 선택"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
FontSize="11.5" Margin="8,0,0,0" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="2" Text="" FontFamily="Segoe MDL2 Assets" FontSize="9"
|
|
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
|
|
</Grid>
|
|
</Border>
|
|
</StackPanel>
|
|
|
|
<StackPanel x:Name="SidebarCodeMenu" Visibility="Collapsed">
|
|
<Border Cursor="Hand" Background="Transparent" CornerRadius="8"
|
|
Padding="8,5" Margin="0,0,0,3"
|
|
MouseLeftButtonUp="SidebarCodeCategory_MouseLeftButtonUp">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="#3B82F6" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="1" Text="코드 작업 유형"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
FontSize="11.5" Margin="8,0,0,0" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="2" Text="" FontFamily="Segoe MDL2 Assets" FontSize="9"
|
|
Foreground="{DynamicResource SecondaryText}" VerticalAlignment="Center"/>
|
|
</Grid>
|
|
</Border>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- 대화 목록 -->
|
|
<ScrollViewer Grid.Row="4" VerticalScrollBarVisibility="Auto"
|
|
HorizontalScrollBarVisibility="Disabled">
|
|
<StackPanel x:Name="ConversationPanel" Margin="8,0"/>
|
|
</ScrollViewer>
|
|
|
|
<!-- 하단: 삭제 -->
|
|
<Border Grid.Row="5" BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,1,0,0"
|
|
Padding="0,4">
|
|
<Button x:Name="BtnDeleteAll" Style="{StaticResource GhostBtn}"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
Click="BtnDeleteAll_Click">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
|
Foreground="#AA5555" VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<TextBlock Text="전체 삭제" FontSize="11" Foreground="#AA5555"/>
|
|
</StackPanel>
|
|
</Button>
|
|
</Border>
|
|
|
|
<!-- 하단: 사용자 계정 -->
|
|
<Border Grid.Row="6" Margin="12,0,12,8">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Border Grid.Column="0" Width="34" Height="34" CornerRadius="17"
|
|
Background="{DynamicResource AccentColor}" Margin="0,0,10,0">
|
|
<TextBlock x:Name="UserInitialSidebar" Text="U" FontSize="14" FontWeight="Bold"
|
|
Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<StackPanel Grid.Column="1" VerticalAlignment="Center">
|
|
<TextBlock x:Name="UserNameText" Text="" FontSize="12" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
TextTrimming="CharacterEllipsis"/>
|
|
<TextBlock x:Name="UserPcText" Text="" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</StackPanel>
|
|
<Button x:Name="BtnSidebarSettings"
|
|
Grid.Column="2"
|
|
Style="{StaticResource GhostBtn}"
|
|
Width="32" Height="32"
|
|
Margin="8,0,0,0"
|
|
VerticalAlignment="Center"
|
|
Click="BtnSettings_Click"
|
|
ToolTip="AX Agent 설정">
|
|
<TextBlock Text=""
|
|
FontFamily="Segoe MDL2 Assets"
|
|
FontSize="13"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"/>
|
|
</Button>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- ══════════════════════════════════════════════════════ -->
|
|
<!-- 우측: 메시지 영역 -->
|
|
<!-- ══════════════════════════════════════════════════════ -->
|
|
<Grid Grid.Column="2">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="48"/>
|
|
<RowDefinition Height="Auto"/> <!-- 서브 바: 제목 + 프리뷰 -->
|
|
<RowDefinition Height="Auto"/> <!-- 스티키 진행률 바 -->
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/> <!-- 입력 바 + Popup들 -->
|
|
<RowDefinition Height="Auto"/> <!-- 파일 탐색기 -->
|
|
<RowDefinition Height="Auto"/> <!-- 상태바 -->
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- ── 서브 바: 제목 + 프리뷰 버튼 (AX Agent 스타일) ── -->
|
|
<Border Grid.Row="1" Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,0,0,1"
|
|
Padding="12,4,12,4">
|
|
<Grid>
|
|
<!-- 좌: 대화 제목 -->
|
|
<StackPanel Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Center">
|
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
|
<Grid VerticalAlignment="Center">
|
|
<TextBlock x:Name="ChatTitle" Text="" FontSize="13" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
|
|
MaxWidth="400" Cursor="Hand"
|
|
MouseLeftButtonDown="ChatTitle_MouseDown"
|
|
ToolTip="클릭하여 대화 이름 변경"/>
|
|
<TextBox x:Name="ChatTitleEdit" FontSize="13"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
Background="{DynamicResource HintBackground}"
|
|
CaretBrush="{DynamicResource AccentColor}"
|
|
BorderThickness="0" Padding="4,2"
|
|
MaxWidth="400" MinWidth="80"
|
|
Visibility="Collapsed"
|
|
LostFocus="ChatTitleEdit_LostFocus"
|
|
KeyDown="ChatTitleEdit_KeyDown"/>
|
|
</Grid>
|
|
<Border x:Name="ConversationStatusStrip" Visibility="Collapsed"
|
|
Margin="10,0,0,0" Padding="8,2"
|
|
CornerRadius="8"
|
|
Background="{DynamicResource HintBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
|
|
<TextBlock x:Name="ConversationStatusStripLabel" Text=""
|
|
FontSize="10" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center"/>
|
|
</Border>
|
|
</StackPanel>
|
|
<WrapPanel x:Name="ConversationQuickStrip" Visibility="Collapsed"
|
|
Margin="0,4,0,0">
|
|
<Button x:Name="BtnQuickRunningFilter" Style="{StaticResource GhostBtn}"
|
|
Padding="8,2" Margin="0,0,6,0"
|
|
Click="BtnQuickRunningFilter_Click"
|
|
Visibility="Collapsed"
|
|
IsEnabled="False">
|
|
<TextBlock x:Name="QuickRunningLabel" Text="진행"
|
|
FontSize="10" FontWeight="SemiBold"/>
|
|
</Button>
|
|
<Button x:Name="BtnQuickHotSort" Style="{StaticResource GhostBtn}"
|
|
Padding="8,2"
|
|
Click="BtnQuickHotSort_Click">
|
|
<TextBlock x:Name="QuickHotLabel" Text="활동"
|
|
FontSize="10" FontWeight="SemiBold"/>
|
|
</Button>
|
|
</WrapPanel>
|
|
</StackPanel>
|
|
<!-- 우: 프리뷰 토글 버튼 -->
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
|
|
<Button x:Name="BtnPreviewToggle" Style="{StaticResource GhostBtn}"
|
|
Click="BtnPreviewToggle_Click" ToolTip="미리보기 패널" Visibility="Collapsed"
|
|
Padding="8,4">
|
|
<StackPanel Orientation="Horizontal">
|
|
<Ellipse x:Name="PreviewDot" Width="6" Height="6" Fill="#22C55E"
|
|
Margin="0,0,5,0" VerticalAlignment="Center"/>
|
|
<TextBlock Text="미리보기" FontSize="12"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- ── 에이전트 진행률 스티키 바 ── -->
|
|
<Border x:Name="AgentProgressBar" Grid.Row="2" Visibility="Collapsed"
|
|
Background="{DynamicResource HintBackground}"
|
|
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,0,0,1"
|
|
Padding="16,6,16,6">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<!-- 아이콘 -->
|
|
<TextBlock Grid.Column="0" x:Name="ProgressIcon"
|
|
Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center" Margin="0,0,8,0"/>
|
|
<!-- 단계 텍스트 -->
|
|
<TextBlock Grid.Column="1" x:Name="ProgressStepLabel"
|
|
Text="" FontSize="12"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
|
|
MaxWidth="300" Margin="0,0,12,0"/>
|
|
<!-- 프로그레스 바 -->
|
|
<Border Grid.Column="2" CornerRadius="3" Background="{DynamicResource ItemHoverBackground}"
|
|
Height="6" VerticalAlignment="Center" Margin="0,0,12,0">
|
|
<Border x:Name="ProgressFill" CornerRadius="3" HorizontalAlignment="Left"
|
|
Width="0" Background="{DynamicResource AccentColor}"/>
|
|
</Border>
|
|
<!-- 퍼센트 -->
|
|
<TextBlock Grid.Column="3" x:Name="ProgressPercent"
|
|
Text="0%" FontSize="11" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center" Margin="0,0,8,0" MinWidth="30" TextAlignment="Right"/>
|
|
<!-- 경과 시간 -->
|
|
<TextBlock Grid.Column="4" x:Name="ProgressElapsed"
|
|
Text="0:00" FontSize="10.5"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- ── 상단 권한 알림 배너 ── -->
|
|
<Border x:Name="PermissionTopBanner"
|
|
Grid.Row="0" Grid.RowSpan="3"
|
|
Visibility="Collapsed"
|
|
Margin="16,94,16,0"
|
|
VerticalAlignment="Top"
|
|
Panel.ZIndex="20"
|
|
Background="{DynamicResource HintBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1"
|
|
CornerRadius="10"
|
|
Padding="10,8">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="PermissionTopBannerIcon"
|
|
Text=""
|
|
FontFamily="Segoe MDL2 Assets"
|
|
FontSize="12"
|
|
Margin="0,0,8,0"
|
|
VerticalAlignment="Center"
|
|
Foreground="{DynamicResource AccentColor}"/>
|
|
<StackPanel>
|
|
<TextBlock x:Name="PermissionTopBannerTitle"
|
|
Text="현재 권한 모드"
|
|
FontSize="12"
|
|
FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"/>
|
|
<TextBlock x:Name="PermissionTopBannerText"
|
|
Text=""
|
|
FontSize="11"
|
|
TextWrapping="Wrap"
|
|
MaxWidth="760"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
<Button x:Name="BtnPermissionTopBannerClose"
|
|
Grid.Column="1"
|
|
Style="{StaticResource GhostBtn}"
|
|
Padding="2"
|
|
Cursor="Hand"
|
|
Click="BtnPermissionTopBannerClose_Click"
|
|
ToolTip="닫기">
|
|
<TextBlock Text=""
|
|
FontFamily="Segoe MDL2 Assets"
|
|
FontSize="9"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- ── 상단 바: 토글 | 탭(중앙) | 설정+닫기 ── -->
|
|
<Border Grid.Row="0" Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,0,0,1">
|
|
<Grid>
|
|
<!-- 좌: 사이드바 토글 -->
|
|
<Button x:Name="BtnToggleSidebar" Style="{StaticResource GhostBtn}"
|
|
HorizontalAlignment="Left" VerticalAlignment="Center" Margin="8,0"
|
|
Click="BtnToggleSidebar_Click" ToolTip="사이드바 열기/닫기"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<TextBlock x:Name="ToggleSidebarIcon" Text="" FontFamily="Segoe MDL2 Assets" FontSize="18"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
|
|
<!-- 중앙: 탭 메뉴 -->
|
|
<Border HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
Background="{DynamicResource HintBackground}"
|
|
CornerRadius="10" Padding="3"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<StackPanel Orientation="Horizontal">
|
|
<RadioButton x:Name="TabChat" Content="Chat" Style="{StaticResource TopTabBtn}"
|
|
IsChecked="True" GroupName="TopTab"
|
|
Checked="TabChat_Checked"/>
|
|
<RadioButton x:Name="TabCowork" Content="Cowork" Style="{StaticResource TopTabBtn}"
|
|
GroupName="TopTab"
|
|
Checked="TabCowork_Checked"/>
|
|
<RadioButton x:Name="TabCode" Content="Code" Style="{StaticResource TopTabBtn}"
|
|
GroupName="TopTab"
|
|
Checked="TabCode_Checked"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- 우: 최소화 + 최대화 + 닫기 -->
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right"
|
|
VerticalAlignment="Center" Margin="0,0,4,0"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<Button Style="{StaticResource GhostBtn}" Click="BtnMinimize_Click" ToolTip="최소화">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
<Button Style="{StaticResource GhostBtn}" Click="BtnMaximize_Click" ToolTip="최대화">
|
|
<TextBlock x:Name="MaximizeIcon" Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
<Button Style="{StaticResource GhostBtn}" Click="BtnClose_Click" ToolTip="닫기">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- ── 메시지 내 검색 바 (Ctrl+F) ── -->
|
|
<Border x:Name="MessageSearchBar" Grid.Row="3" Visibility="Collapsed"
|
|
Panel.ZIndex="5" VerticalAlignment="Top"
|
|
Background="{DynamicResource HintBackground}"
|
|
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,0,0,1"
|
|
Padding="12,6" Margin="40,0,40,0" CornerRadius="0,0,10,10">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="" FontFamily="Segoe MDL2 Assets" FontSize="13"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,8,0"/>
|
|
<TextBox x:Name="SearchTextBox" Grid.Column="1"
|
|
FontSize="12.5" Padding="4,3"
|
|
Background="Transparent" Foreground="{DynamicResource PrimaryText}"
|
|
BorderThickness="0"
|
|
TextChanged="SearchTextBox_TextChanged"/>
|
|
<TextBlock x:Name="SearchResultCount" Grid.Column="2"
|
|
Text="" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="8,0"/>
|
|
<Button Grid.Column="3" Style="{StaticResource GhostBtn}" Padding="4"
|
|
Click="SearchPrev_Click" ToolTip="이전 (Shift+Enter)">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
<Button Grid.Column="4" Style="{StaticResource GhostBtn}" Padding="4"
|
|
Click="SearchNext_Click" ToolTip="다음 (Enter)">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
<Button Grid.Column="5" Style="{StaticResource GhostBtn}" Padding="4"
|
|
Click="SearchClose_Click" ToolTip="닫기 (Esc)">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="9"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- ── 메시지 스크롤 ── -->
|
|
<ScrollViewer x:Name="MessageScroll" Grid.Row="3"
|
|
VerticalScrollBarVisibility="Auto"
|
|
HorizontalScrollBarVisibility="Disabled"
|
|
Background="{DynamicResource LauncherBackground}">
|
|
<StackPanel x:Name="MessagePanel"
|
|
Margin="0,34,0,22"
|
|
HorizontalAlignment="Stretch">
|
|
<StackPanel.RenderTransform>
|
|
<TranslateTransform/>
|
|
</StackPanel.RenderTransform>
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
|
|
<!-- 빈 상태 -->
|
|
<StackPanel x:Name="EmptyState" Grid.Row="3"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
MaxWidth="520">
|
|
|
|
<!-- 부유 AI 아이콘 -->
|
|
<Border x:Name="EmptyIcon" CornerRadius="24" Width="72" Height="72"
|
|
HorizontalAlignment="Center" Margin="0,0,0,20">
|
|
<Border.Background>
|
|
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
|
|
<GradientStop Color="#4B5EFC" Offset="0"/>
|
|
<GradientStop Color="#8B6DFF" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
</Border.Background>
|
|
<Border.RenderTransform>
|
|
<TranslateTransform x:Name="EmptyIconTranslate"/>
|
|
</Border.RenderTransform>
|
|
<Border.Triggers>
|
|
<EventTrigger RoutedEvent="Loaded">
|
|
<BeginStoryboard>
|
|
<Storyboard RepeatBehavior="Forever" AutoReverse="True">
|
|
<DoubleAnimation Storyboard.TargetName="EmptyIconTranslate"
|
|
Storyboard.TargetProperty="Y"
|
|
From="0" To="-6" Duration="0:0:1.8">
|
|
<DoubleAnimation.EasingFunction>
|
|
<SineEase EasingMode="EaseInOut"/>
|
|
</DoubleAnimation.EasingFunction>
|
|
</DoubleAnimation>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</EventTrigger>
|
|
</Border.Triggers>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="30"
|
|
Foreground="White"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
|
|
<TextBlock x:Name="EmptyStateTitle" Text="작업 유형을 선택하세요" FontSize="18" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}" HorizontalAlignment="Center"/>
|
|
<TextBlock x:Name="EmptyStateDesc" Text="주제에 맞는 전문 프리셋이 자동 적용됩니다"
|
|
FontSize="12" Foreground="{DynamicResource SecondaryText}"
|
|
HorizontalAlignment="Center" Margin="0,8,0,24"/>
|
|
|
|
<!-- 대화 주제 버튼 (프리셋에서 동적 생성) -->
|
|
<WrapPanel x:Name="TopicButtonPanel" HorizontalAlignment="Center"
|
|
Margin="0,0,0,0"/>
|
|
</StackPanel>
|
|
|
|
<!-- ── 프롬프트 템플릿 팝업 ── -->
|
|
<Popup x:Name="TemplatePopup" Grid.Row="4"
|
|
PlacementTarget="{Binding ElementName=InputBorder}"
|
|
Placement="Top" StaysOpen="False"
|
|
AllowsTransparency="True" PopupAnimation="Fade">
|
|
<Border Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1" CornerRadius="10"
|
|
Padding="4" MinWidth="260" MaxWidth="400">
|
|
<StackPanel>
|
|
<TextBlock Text="프롬프트 템플릿" FontSize="12" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
Margin="10,8,10,6"/>
|
|
<ItemsControl x:Name="TemplateItems"/>
|
|
<TextBlock x:Name="TemplateEmptyHint"
|
|
Text="등록된 템플릿이 없습니다. 설정에서 추가하세요."
|
|
FontSize="11" Foreground="{DynamicResource SecondaryText}"
|
|
Margin="10,4,10,8" Visibility="Collapsed"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Popup>
|
|
|
|
<!-- ── 권한 선택 팝업 ── -->
|
|
<Popup x:Name="PermissionPopup" Grid.Row="4"
|
|
PlacementTarget="{Binding ElementName=BtnPermission}"
|
|
Placement="Top" StaysOpen="False"
|
|
AllowsTransparency="True" PopupAnimation="Fade">
|
|
<Border Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1" CornerRadius="16"
|
|
Padding="8" MinWidth="320">
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="18" ShadowDepth="0" Opacity="0.14"/>
|
|
</Border.Effect>
|
|
<StackPanel x:Name="PermissionItems" Margin="2"/>
|
|
</Border>
|
|
</Popup>
|
|
|
|
<!-- ── 데이터 활용 수준 팝업 ── -->
|
|
<Popup x:Name="DataUsagePopup" Grid.Row="4"
|
|
PlacementTarget="{Binding ElementName=BtnDataUsage}"
|
|
Placement="Top" StaysOpen="False"
|
|
AllowsTransparency="True" PopupAnimation="Fade">
|
|
<Border Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1" CornerRadius="12"
|
|
Padding="6" MinWidth="280">
|
|
<StackPanel x:Name="DataUsageItems" Margin="2"/>
|
|
</Border>
|
|
</Popup>
|
|
|
|
<!-- ── 슬래시 명령어 팝업 ── -->
|
|
<Popup x:Name="SlashPopup" Grid.Row="4"
|
|
PlacementTarget="{Binding ElementName=InputBorder}"
|
|
Placement="Top" StaysOpen="False"
|
|
AllowsTransparency="True" PopupAnimation="Fade">
|
|
<Border Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1" CornerRadius="18"
|
|
Padding="0" MinWidth="620" MaxWidth="780"
|
|
PreviewMouseWheel="SlashPopup_PreviewMouseWheel">
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="16" ShadowDepth="0" Opacity="0.16"/>
|
|
</Border.Effect>
|
|
<StackPanel>
|
|
<Border Background="{DynamicResource ItemBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="0,0,0,1"
|
|
CornerRadius="18,18,0,0"
|
|
Padding="14,12,14,10">
|
|
<StackPanel>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Orientation="Horizontal" Grid.Column="0">
|
|
<Border Background="{DynamicResource AccentColor}"
|
|
CornerRadius="8"
|
|
Padding="6,2"
|
|
Margin="0,0,8,0"
|
|
VerticalAlignment="Center">
|
|
<TextBlock Text="/"
|
|
FontSize="12"
|
|
FontWeight="SemiBold"
|
|
Foreground="White"/>
|
|
</Border>
|
|
<TextBlock x:Name="SlashPopupTitle"
|
|
Text="명령 및 스킬"
|
|
FontSize="13.5"
|
|
FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
<Button Grid.Column="1"
|
|
x:Name="BtnSlashReset"
|
|
Click="BtnSlashReset_Click"
|
|
Style="{StaticResource GhostBtn}"
|
|
Padding="8,4"
|
|
Margin="0,0,6,0"
|
|
ToolTip="핀/최근 정리">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text=""
|
|
FontFamily="Segoe MDL2 Assets"
|
|
FontSize="10.5"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
Margin="0,0,4,0"/>
|
|
<TextBlock Text="정리"
|
|
FontSize="11.5"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</StackPanel>
|
|
</Button>
|
|
<Button Grid.Column="2"
|
|
x:Name="BtnSlashToggleGroups"
|
|
Click="BtnSlashToggleGroups_Click"
|
|
Style="{StaticResource GhostBtn}"
|
|
Padding="8,4"
|
|
ToolTip="명령/스킬 그룹 전체 접기 또는 펼치기">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text=""
|
|
FontFamily="Segoe MDL2 Assets"
|
|
FontSize="10.5"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
Margin="0,0,4,0"/>
|
|
<TextBlock x:Name="SlashToggleGroupsLabel"
|
|
Text="전체 접기"
|
|
FontSize="11.5"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</StackPanel>
|
|
</Button>
|
|
</Grid>
|
|
<TextBlock x:Name="SlashPopupHint"
|
|
Text="방향키나 마우스 휠로 이동하고 Enter로 바로 실행합니다"
|
|
FontSize="11.5"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
Margin="0,6,0,0"/>
|
|
</StackPanel>
|
|
</Border>
|
|
<ScrollViewer x:Name="SlashScrollViewer"
|
|
MaxHeight="420"
|
|
VerticalScrollBarVisibility="Auto"
|
|
HorizontalScrollBarVisibility="Disabled"
|
|
CanContentScroll="False"
|
|
PanningMode="VerticalOnly"
|
|
PreviewMouseWheel="SlashPopup_PreviewMouseWheel"
|
|
Padding="10,10,10,8">
|
|
<ItemsControl x:Name="SlashItems"/>
|
|
</ScrollViewer>
|
|
<TextBlock x:Name="SlashPopupFooter"
|
|
Margin="14,0,14,12"
|
|
Text="Enter 실행 · ↑↓ 이동 · 휠 스크롤 · Esc 닫기"
|
|
FontSize="10.5"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Popup>
|
|
|
|
<!-- ── 폴더 선택 팝업 ── -->
|
|
<Popup x:Name="FolderMenuPopup" Grid.Row="4"
|
|
PlacementTarget="{Binding ElementName=FolderPathLabel}"
|
|
Placement="Top" StaysOpen="False"
|
|
AllowsTransparency="True" PopupAnimation="Fade">
|
|
<Border Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1" CornerRadius="12"
|
|
Padding="6" MinWidth="300" MaxWidth="460">
|
|
<StackPanel x:Name="FolderMenuItems" Margin="2"/>
|
|
</Border>
|
|
</Popup>
|
|
|
|
<!-- ── 토스트 알림 ── -->
|
|
<Border x:Name="ToastBorder" Grid.Row="3" Visibility="Collapsed"
|
|
Panel.ZIndex="20"
|
|
HorizontalAlignment="Center" VerticalAlignment="Bottom"
|
|
Margin="0,0,0,16"
|
|
Background="{DynamicResource ItemBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1"
|
|
CornerRadius="20"
|
|
Padding="16,8,16,8" Opacity="0"
|
|
IsHitTestVisible="False">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="ToastIcon" Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<TextBlock x:Name="ToastText" Text="" FontSize="12"
|
|
Foreground="{DynamicResource PrimaryText}" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- ── 입력 바 ── -->
|
|
<Border Grid.Row="4" Margin="48,0,48,20">
|
|
<StackPanel>
|
|
<Border x:Name="DraftPreviewCard"
|
|
Visibility="Collapsed"
|
|
Background="{DynamicResource ItemBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1"
|
|
CornerRadius="18"
|
|
Padding="12,10,12,10"
|
|
Margin="0,0,0,10">
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="14" ShadowDepth="0" Opacity="0.06"/>
|
|
</Border.Effect>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0">
|
|
<TextBlock Text="후속 요청"
|
|
FontSize="10.5"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
<TextBlock x:Name="DraftPreviewText"
|
|
FontSize="12.5"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
Margin="0,4,0,0"
|
|
TextTrimming="CharacterEllipsis"/>
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Top">
|
|
<Button x:Name="BtnDraftEnqueue"
|
|
Style="{StaticResource GhostBtn}"
|
|
Padding="6,4"
|
|
Margin="0,0,4,0"
|
|
Click="BtnDraftEnqueue_Click"
|
|
ToolTip="대기열에 추가">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
<Button x:Name="BtnDraftEdit"
|
|
Style="{StaticResource GhostBtn}"
|
|
Padding="6,4"
|
|
Margin="0,0,4,0"
|
|
Click="BtnDraftEdit_Click"
|
|
ToolTip="메시지 편집">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
<Button x:Name="BtnDraftClear"
|
|
Style="{StaticResource GhostBtn}"
|
|
Padding="6,4"
|
|
Click="BtnDraftClear_Click"
|
|
ToolTip="대기열 끄기">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
<!-- 무지개 글로우 + 입력 영역 (겹침 레이아웃) -->
|
|
<Grid>
|
|
<!-- 무지개 글로우 외부 테두리 (메시지 전송 시 애니메이션) -->
|
|
<StackPanel x:Name="DraftQueuePanel"
|
|
Visibility="Collapsed"
|
|
Margin="0,0,0,10"/>
|
|
<Border x:Name="InputGlowBorder" CornerRadius="26" Opacity="0"
|
|
Margin="-3" IsHitTestVisible="False">
|
|
<Border.BorderBrush>
|
|
<LinearGradientBrush x:Name="RainbowBrush" StartPoint="0,0" EndPoint="1,1">
|
|
<GradientStop Color="#FF6B6B" Offset="0.0"/>
|
|
<GradientStop Color="#FECA57" Offset="0.17"/>
|
|
<GradientStop Color="#48DBFB" Offset="0.33"/>
|
|
<GradientStop Color="#FF9FF3" Offset="0.5"/>
|
|
<GradientStop Color="#54A0FF" Offset="0.67"/>
|
|
<GradientStop Color="#5F27CD" Offset="0.83"/>
|
|
<GradientStop Color="#FF6B6B" Offset="1.0"/>
|
|
</LinearGradientBrush>
|
|
</Border.BorderBrush>
|
|
<Border.BorderThickness>
|
|
<Thickness>3</Thickness>
|
|
</Border.BorderThickness>
|
|
<Border.Effect>
|
|
<BlurEffect Radius="6"/>
|
|
</Border.Effect>
|
|
</Border>
|
|
<!-- 실제 입력 영역 -->
|
|
<Border x:Name="InputBorder"
|
|
Background="{DynamicResource ItemBackground}"
|
|
CornerRadius="24" Padding="7"
|
|
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
|
|
<Border.Effect>
|
|
<DropShadowEffect BlurRadius="18" ShadowDepth="0" Opacity="0.08"/>
|
|
</Border.Effect>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Row 0: 모델 셀렉터 + 템플릿 버튼 -->
|
|
<Grid Grid.Row="0" Margin="6,1,6,2">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Button x:Name="BtnModelSelector"
|
|
Style="{StaticResource OutlineHoverBtn}"
|
|
Grid.Column="0"
|
|
HorizontalAlignment="Left"
|
|
Margin="0"
|
|
MinHeight="28"
|
|
Padding="10,3"
|
|
Click="BtnModelSelector_Click"
|
|
ToolTip="모델/추론 빠른 설정"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,5,0"/>
|
|
<TextBlock x:Name="ModelLabel" FontSize="12.5"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="9"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="4,1,0,0"/>
|
|
</StackPanel>
|
|
</Button>
|
|
<Button x:Name="BtnTemplateSelector"
|
|
Style="{StaticResource OutlineHoverBtn}"
|
|
Grid.Column="2"
|
|
HorizontalAlignment="Right"
|
|
Margin="0"
|
|
MinHeight="28"
|
|
MinWidth="64"
|
|
Padding="8,3"
|
|
Click="BtnTemplateSelector_Click"
|
|
ToolTip="프롬프트 템플릿"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,5,0"/>
|
|
<TextBlock Text="프리셋" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="8"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="4,1,0,0"/>
|
|
</StackPanel>
|
|
</Button>
|
|
</Grid>
|
|
|
|
<!-- Row 1: 통합 설정 패널 -->
|
|
<Border x:Name="InlineSettingsPanel"
|
|
Grid.Row="1"
|
|
Margin="8,3,8,4"
|
|
Padding="10,9,10,8"
|
|
CornerRadius="12"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1"
|
|
Background="{DynamicResource SecondaryBackground}"
|
|
Visibility="Collapsed">
|
|
<StackPanel>
|
|
<Grid Margin="0,0,0,8">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0"
|
|
Text="채팅 설정"
|
|
FontSize="12"
|
|
FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="1"
|
|
x:Name="InlineSettingsHintText"
|
|
Margin="8,0,0,0"
|
|
Text="모델/권한 핵심 옵션"
|
|
FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
<Button Grid.Column="2"
|
|
x:Name="BtnInlineSettingsClose"
|
|
Style="{StaticResource GhostBtn}"
|
|
Padding="6,3"
|
|
Click="BtnInlineSettingsClose_Click"
|
|
ToolTip="설정 패널 닫기">
|
|
<TextBlock Text=""
|
|
FontFamily="Segoe MDL2 Assets"
|
|
FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
</Grid>
|
|
|
|
<Grid Margin="0,0,0,8">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0"
|
|
Text="서비스"
|
|
Margin="0,0,8,0"
|
|
VerticalAlignment="Center"
|
|
FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
<ComboBox Grid.Column="1"
|
|
x:Name="CmbInlineService"
|
|
MinWidth="130"
|
|
Height="28"
|
|
SelectionChanged="CmbInlineService_SelectionChanged"/>
|
|
<TextBlock Grid.Column="2"
|
|
Text="모델"
|
|
Margin="12,0,8,0"
|
|
VerticalAlignment="Center"
|
|
FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
<ComboBox Grid.Column="3"
|
|
x:Name="CmbInlineModel"
|
|
Height="28"
|
|
SelectionChanged="CmbInlineModel_SelectionChanged"/>
|
|
</Grid>
|
|
|
|
<WrapPanel x:Name="InlineSettingsQuickActions">
|
|
<Button x:Name="BtnInlineFastMode"
|
|
Style="{StaticResource OutlineHoverBtn}"
|
|
Margin="0,0,6,6"
|
|
Padding="10,5"
|
|
Click="BtnInlineFastMode_Click"/>
|
|
<Button x:Name="BtnInlineReasoning"
|
|
Style="{StaticResource OutlineHoverBtn}"
|
|
Margin="0,0,6,6"
|
|
Padding="10,5"
|
|
Click="BtnInlineReasoning_Click"/>
|
|
<Button x:Name="BtnInlinePlanMode"
|
|
Style="{StaticResource OutlineHoverBtn}"
|
|
Margin="0,0,6,6"
|
|
Padding="10,5"
|
|
Click="BtnInlinePlanMode_Click"/>
|
|
<Button x:Name="BtnInlinePermission"
|
|
Style="{StaticResource OutlineHoverBtn}"
|
|
Margin="0,0,6,6"
|
|
Padding="10,5"
|
|
Click="BtnInlinePermission_Click"/>
|
|
<Button x:Name="BtnInlineSkill"
|
|
Style="{StaticResource OutlineHoverBtn}"
|
|
Margin="0,0,6,6"
|
|
Padding="10,5"
|
|
Click="BtnInlineSkill_Click"
|
|
Visibility="Collapsed"/>
|
|
<Button x:Name="BtnInlineCommandBrowser"
|
|
Style="{StaticResource OutlineHoverBtn}"
|
|
Margin="0,0,6,6"
|
|
Padding="10,5"
|
|
Click="BtnInlineCommandBrowser_Click"
|
|
Visibility="Collapsed"/>
|
|
<Button x:Name="BtnInlineMcp"
|
|
Style="{StaticResource OutlineHoverBtn}"
|
|
Margin="0,0,6,6"
|
|
Padding="10,5"
|
|
Click="BtnInlineMcp_Click"
|
|
Visibility="Collapsed"/>
|
|
</WrapPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Row 2: 첨부 파일 목록 -->
|
|
<ItemsControl x:Name="AttachedFilesPanel" Grid.Row="2"
|
|
Margin="8,0,8,2" Visibility="Collapsed">
|
|
<ItemsControl.ItemsPanel>
|
|
<ItemsPanelTemplate>
|
|
<WrapPanel/>
|
|
</ItemsPanelTemplate>
|
|
</ItemsControl.ItemsPanel>
|
|
</ItemsControl>
|
|
|
|
<!-- 입력 영역 (Row 3) -->
|
|
<Grid Grid.Row="3">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Grid Grid.Column="0">
|
|
<TextBox x:Name="InputBox"
|
|
FontSize="14" FontFamily="Segoe UI, Malgun Gothic"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
Background="Transparent"
|
|
CaretBrush="{DynamicResource AccentColor}"
|
|
BorderThickness="0" Padding="14,10"
|
|
VerticalContentAlignment="Top"
|
|
AcceptsReturn="True"
|
|
PreviewKeyDown="InputBox_PreviewKeyDown"
|
|
TextChanged="InputBox_TextChanged"
|
|
TextWrapping="Wrap"
|
|
MinHeight="40" MaxHeight="160"
|
|
VerticalScrollBarVisibility="Auto"/>
|
|
<!-- 워터마크 (프롬프트 카드 안내문구) -->
|
|
<TextBlock x:Name="InputWatermark"
|
|
FontSize="14" FontFamily="Segoe UI, Malgun Gothic"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
Padding="14,10" IsHitTestVisible="False"
|
|
TextWrapping="Wrap" Opacity="0.7"
|
|
Visibility="Collapsed"/>
|
|
<!-- 슬래시 명령어 칩 (명령 선택 후 표시) -->
|
|
<Border x:Name="SlashCommandChip"
|
|
HorizontalAlignment="Left" VerticalAlignment="Top"
|
|
Margin="10,7,0,0" Visibility="Collapsed"
|
|
CornerRadius="7" Padding="8,3,4,3"
|
|
Background="{DynamicResource ItemHoverBackground}"
|
|
IsHitTestVisible="True">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="SlashChipText"
|
|
FontSize="12.5" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center"/>
|
|
<Border x:Name="SlashChipClose" Cursor="Hand"
|
|
Padding="4,0,2,0" Margin="2,0,0,0"
|
|
VerticalAlignment="Center">
|
|
<TextBlock Text=""
|
|
FontFamily="Segoe MDL2 Assets"
|
|
FontSize="8" Foreground="{DynamicResource AccentColor}"/>
|
|
</Border>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- 파일 첨부 -->
|
|
<Button x:Name="BtnAttach" Style="{StaticResource GhostBtn}" Grid.Column="1"
|
|
Width="36" Height="36" Margin="0,0,2,0" VerticalAlignment="Bottom"
|
|
Click="BtnAttach_Click" ToolTip="파일 첨부"
|
|
WindowChrome.IsHitTestVisibleInChrome="True"
|
|
AllowDrop="True">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="14"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
|
|
<!-- 내보내기 -->
|
|
<Button Style="{StaticResource GhostBtn}" Grid.Column="2"
|
|
Width="36" Height="36" Margin="0,0,2,0" VerticalAlignment="Bottom"
|
|
Click="BtnExport_Click" ToolTip="대화 내보내기"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="14"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
|
|
<!-- 일시정지 -->
|
|
<Border x:Name="BtnPause" Grid.Column="3"
|
|
Width="32" Height="32" Margin="0,0,2,0"
|
|
CornerRadius="8" Cursor="Hand"
|
|
Background="{DynamicResource ItemHoverBackground}" Visibility="Collapsed"
|
|
VerticalAlignment="Bottom"
|
|
MouseLeftButtonUp="BtnPause_Click"
|
|
ToolTip="일시정지 / 재개">
|
|
<TextBlock x:Name="PauseIcon" Text=""
|
|
FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
|
|
<!-- 중지/전송 -->
|
|
<Button x:Name="BtnStop" Grid.Column="3"
|
|
Width="40" Height="40" Margin="4,0,4,0"
|
|
Cursor="Hand" Click="BtnStop_Click"
|
|
VerticalAlignment="Bottom" Visibility="Collapsed"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<Button.Template>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border Background="#DC2626" CornerRadius="20">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets"
|
|
FontSize="13" Foreground="White"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Button.Template>
|
|
</Button>
|
|
<Button x:Name="BtnSend" Grid.Column="4"
|
|
Width="40" Height="40" Margin="4,0,4,0"
|
|
Cursor="Hand" Click="BtnSend_Click"
|
|
VerticalAlignment="Bottom">
|
|
<Button.Template>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="Bd" Background="{DynamicResource AccentColor}"
|
|
CornerRadius="20">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets"
|
|
FontSize="13" Foreground="White"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Opacity" Value="0.85"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="Bd" Property="Opacity" Value="0.3"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Button.Template>
|
|
</Button>
|
|
</Grid>
|
|
</Grid>
|
|
</Border>
|
|
</Grid> <!-- 글로우 + 입력 Grid 닫기 -->
|
|
|
|
<!-- ── 폴더 바 + 권한 메뉴 (입력 하단, Cowork/Code 탭 전용) ── -->
|
|
<Border x:Name="FolderBar" Visibility="Collapsed"
|
|
Margin="4,4,4,0" MinHeight="34">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/> <!-- 0: 폴더 아이콘 -->
|
|
<ColumnDefinition Width="*"/> <!-- 1: 폴더 경로 -->
|
|
<ColumnDefinition Width="Auto"/> <!-- 2: 폴더 해제 X -->
|
|
<ColumnDefinition Width="Auto"/> <!-- 3: 구분선 -->
|
|
<ColumnDefinition Width="Auto"/> <!-- 4: 포맷/디자인 -->
|
|
<ColumnDefinition Width="Auto"/> <!-- 5: 구분선 -->
|
|
<ColumnDefinition Width="Auto"/> <!-- 6: 데이터 활용 -->
|
|
<ColumnDefinition Width="Auto"/> <!-- 7: 구분선 -->
|
|
<ColumnDefinition Width="Auto"/> <!-- 8: 권한 -->
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- 폴더 아이콘 -->
|
|
<TextBlock Grid.Column="0" Text="" FontFamily="Segoe MDL2 Assets" FontSize="14"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center" Margin="6,0,4,0"/>
|
|
|
|
<!-- 폴더 경로 (클릭 시 최근 폴더 메뉴) -->
|
|
<TextBlock x:Name="FolderPathLabel" Grid.Column="1"
|
|
Text="폴더를 선택하세요" FontSize="13"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
|
|
Cursor="Hand" MouseLeftButtonUp="FolderPathLabel_Click"
|
|
ToolTip="클릭하여 폴더 변경"/>
|
|
|
|
<!-- 폴더 해제 -->
|
|
<Button Grid.Column="2" Style="{StaticResource GhostBtn}"
|
|
Padding="6,4" Click="BtnFolderClear_Click" ToolTip="폴더 연결 해제">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
|
|
<!-- 구분선 -->
|
|
<Border Grid.Column="3" Width="1" Height="18" Margin="4,0"
|
|
Background="{DynamicResource SeparatorColor}"/>
|
|
|
|
<!-- 포맷/디자인 드롭다운 (Cowork 전용, 코드비하인드에서 동적 생성) -->
|
|
<StackPanel x:Name="MoodIconPanel" Grid.Column="4" Orientation="Horizontal"
|
|
VerticalAlignment="Center"/>
|
|
|
|
<!-- 구분선 (포맷/디자인 뒤) -->
|
|
<Border x:Name="FormatMoodSeparator" Grid.Column="5" Width="1" Height="18" Margin="4,0"
|
|
Background="{DynamicResource SeparatorColor}" Visibility="Collapsed"/>
|
|
|
|
<!-- 데이터 활용 메뉴 -->
|
|
<Border x:Name="BtnDataUsage" Grid.Column="6" Cursor="Hand"
|
|
Background="Transparent" Padding="6,4"
|
|
MouseLeftButtonUp="BtnDataUsage_Click"
|
|
ToolTip="폴더 데이터 활용 수준">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="DataUsageIcon" Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,4,0"/>
|
|
<TextBlock x:Name="DataUsageLabel" Text="활용하지 않음" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- 구분선 -->
|
|
<Border Grid.Column="7" Width="1" Height="18" Margin="4,0"
|
|
Background="{DynamicResource SeparatorColor}"/>
|
|
|
|
<!-- 권한 메뉴 -->
|
|
<Button x:Name="BtnPermission" Grid.Column="8" Style="{StaticResource GhostBtn}"
|
|
Padding="6,4" Click="BtnPermission_Click" ToolTip="파일 접근 권한">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="PermissionIcon" Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,4,0"/>
|
|
<TextBlock x:Name="PermissionLabel" Text="활용하지 않음" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Button>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 포맷 선택 팝업 -->
|
|
<Popup x:Name="FormatMenuPopup" PlacementTarget="{Binding ElementName=BtnFormatMenu}"
|
|
Placement="Top" StaysOpen="False"
|
|
AllowsTransparency="True" PopupAnimation="Fade">
|
|
<Border Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1" CornerRadius="12"
|
|
Padding="6" MinWidth="200">
|
|
<StackPanel x:Name="FormatMenuItems" Margin="2"/>
|
|
</Border>
|
|
</Popup>
|
|
|
|
<!-- 디자인 선택 팝업 -->
|
|
<Popup x:Name="MoodMenuPopup" PlacementTarget="{Binding ElementName=BtnMoodMenu}"
|
|
Placement="Top" StaysOpen="False"
|
|
AllowsTransparency="True" PopupAnimation="Fade">
|
|
<Border Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1" CornerRadius="12"
|
|
Padding="6" MinWidth="380" MaxHeight="480">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
|
|
<StackPanel x:Name="MoodMenuItems" Margin="2"/>
|
|
</ScrollViewer>
|
|
</Border>
|
|
</Popup>
|
|
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- ── 파일 탐색기 패널 ── -->
|
|
<Border x:Name="FileBrowserPanel" Grid.Row="5" Visibility="Collapsed"
|
|
Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,1,0,0"
|
|
MaxHeight="220">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<!-- 툴바 -->
|
|
<Border Grid.Row="0" Background="{DynamicResource HintBackground}" Padding="8,4">
|
|
<Grid>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center" Margin="0,0,6,0"/>
|
|
<TextBlock x:Name="FileBrowserTitle" Text="파일 탐색기"
|
|
FontSize="11.5" FontWeight="SemiBold"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
|
<Button Style="{StaticResource GhostBtn}" Padding="3"
|
|
Click="BtnFileBrowserRefresh_Click" ToolTip="새로고침" Cursor="Hand">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
<Button Style="{StaticResource GhostBtn}" Padding="3"
|
|
Click="BtnFileBrowserOpenFolder_Click" ToolTip="탐색기에서 열기" Cursor="Hand">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
<Button Style="{StaticResource GhostBtn}" Padding="3"
|
|
Click="BtnFileBrowserClose_Click" ToolTip="닫기" Cursor="Hand">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="9"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
<!-- 트리뷰 -->
|
|
<TreeView x:Name="FileTreeView" Grid.Row="1"
|
|
Background="Transparent" BorderThickness="0"
|
|
Foreground="{DynamicResource PrimaryText}"
|
|
FontSize="11.5" Padding="4,2"/>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- ── 하단 상태바 (AX Agent 스타일) ── -->
|
|
<Border Grid.Row="6" Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource SeparatorColor}" BorderThickness="0,1,0,0"
|
|
Padding="12,4,12,4" Height="28">
|
|
<Grid>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left"
|
|
VerticalAlignment="Center">
|
|
<!-- 상태 아이콘 (다이아몬드 + 애니메이션) -->
|
|
<TextBlock x:Name="StatusDiamond" Text="◆" FontSize="10"
|
|
Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center" Margin="0,0,6,0"
|
|
RenderTransformOrigin="0.5,0.5">
|
|
<TextBlock.RenderTransform>
|
|
<RotateTransform x:Name="StatusDiamondRotate" Angle="0"/>
|
|
</TextBlock.RenderTransform>
|
|
</TextBlock>
|
|
<TextBlock x:Name="StatusLabel" Text="대기 중" FontSize="11"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right"
|
|
VerticalAlignment="Center">
|
|
<Border x:Name="RuntimeActivityBadge" Visibility="Collapsed"
|
|
CornerRadius="4" Padding="5,2" Margin="0,0,8,0"
|
|
Background="{DynamicResource HintBackground}" ToolTip="현재 실행 중인 작업"
|
|
Cursor="Hand"
|
|
MouseLeftButtonUp="RuntimeTaskSummary_Click">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
|
<TextBlock x:Name="RuntimeActivityLabel" Text="실행 중 0"
|
|
FontSize="10" Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Border>
|
|
<TextBlock x:Name="LastCompletedLabel" Text=""
|
|
FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,8,0"
|
|
MaxWidth="220" TextTrimming="CharacterEllipsis"
|
|
Visibility="Collapsed"
|
|
Cursor="Hand"
|
|
MouseLeftButtonUp="RuntimeTaskSummary_Click"/>
|
|
<Button x:Name="BtnToggleExecutionLog" Style="{StaticResource GhostBtn}"
|
|
Padding="6,2" Margin="0,0,8,0"
|
|
Click="BtnToggleExecutionLog_Click"
|
|
ToolTip="실행 로그 표시/숨기기">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock x:Name="ExecutionLogIcon" Text=""
|
|
FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,4,0"/>
|
|
<TextBlock x:Name="ExecutionLogLabel" Text="실행 로그 0"
|
|
FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Button>
|
|
<Border x:Name="SubAgentIndicator" Visibility="Collapsed"
|
|
CornerRadius="4" Padding="5,2" Margin="0,0,8,0"
|
|
Background="{DynamicResource HintBackground}" ToolTip="실행 중인 서브에이전트">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
|
<TextBlock x:Name="SubAgentIndicatorLabel" Text="서브에이전트 0"
|
|
FontSize="10" Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Border>
|
|
<!-- 워크플로우 분석기 열기 버튼 (개발자 모드) -->
|
|
<Border x:Name="BtnShowAnalyzer" Visibility="Collapsed"
|
|
CornerRadius="4" Padding="5,2" Margin="0,0,8,0"
|
|
Background="{DynamicResource HintBackground}" Cursor="Hand" ToolTip="워크플로우 분석기"
|
|
MouseLeftButtonUp="BtnShowAnalyzer_Click">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource AccentColor}" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
|
<TextBlock Text="분석기" FontSize="10" Foreground="{DynamicResource AccentColor}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Border>
|
|
<TextBlock x:Name="StatusElapsed" Text="" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center" Margin="0,0,12,0"/>
|
|
<TextBlock x:Name="StatusTokens" Text="" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"
|
|
VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- ══ 미리보기 스플리터 (Column 3) ══ -->
|
|
<GridSplitter x:Name="PreviewSplitter" Grid.Column="3" Width="5"
|
|
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
|
|
Background="Transparent" Cursor="SizeWE" Visibility="Collapsed"
|
|
ShowsPreview="True"/>
|
|
|
|
<!-- ══ 문서 미리보기 패널 (Column 4) ══ -->
|
|
<!--
|
|
WebView2 에어스페이스 문제 해결:
|
|
탭 바와 WebView2 콘텐츠를 DockPanel으로 분리.
|
|
DockPanel.Dock="Top"인 탭 바는 별도 WPF 레이어로 렌더링되어
|
|
WebView2 HWND에 가려지지 않음.
|
|
-->
|
|
<Border x:Name="PreviewPanel" Grid.Column="4" Visibility="Collapsed"
|
|
Background="{DynamicResource LauncherBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}"
|
|
BorderThickness="1,0,0,0">
|
|
<DockPanel LastChildFill="True">
|
|
<!-- 탭 바 + 도구 버튼 (DockPanel.Top — WebView2 위에 독립 레이어) -->
|
|
<Border DockPanel.Dock="Top" Background="{DynamicResource HintBackground}"
|
|
BorderBrush="{DynamicResource BorderColor}" BorderThickness="0,0,0,1"
|
|
Padding="0" Panel.ZIndex="10" Focusable="True"
|
|
PreviewMouseDown="PreviewTabBar_PreviewMouseDown">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<ScrollViewer Grid.Column="0" HorizontalScrollBarVisibility="Hidden"
|
|
VerticalScrollBarVisibility="Disabled" CanContentScroll="True">
|
|
<StackPanel x:Name="PreviewTabPanel" Orientation="Horizontal"/>
|
|
</ScrollViewer>
|
|
<StackPanel Grid.Column="1" Orientation="Horizontal" Margin="4,0">
|
|
<Button x:Name="BtnOpenExternal" Style="{StaticResource GhostBtn}" Padding="6"
|
|
Click="BtnOpenExternal_Click" ToolTip="외부 프로그램으로 열기" Cursor="Hand">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="12"
|
|
Foreground="{DynamicResource SecondaryText}" IsHitTestVisible="False"/>
|
|
</Button>
|
|
<Button Style="{StaticResource GhostBtn}" Padding="6"
|
|
Click="BtnClosePreview_Click" ToolTip="미리보기 닫기" Cursor="Hand">
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}" IsHitTestVisible="False"/>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 미리보기 콘텐츠 영역 (DockPanel.Fill — WebView2는 여기에만 존재) -->
|
|
<Grid ClipToBounds="True">
|
|
<wv2:WebView2 x:Name="PreviewWebView" Visibility="Collapsed"/>
|
|
<ScrollViewer x:Name="PreviewTextScroll" Visibility="Collapsed"
|
|
VerticalScrollBarVisibility="Auto" Padding="12,8">
|
|
<TextBlock x:Name="PreviewTextBlock" TextWrapping="Wrap"
|
|
FontFamily="Consolas" FontSize="12"
|
|
Foreground="{DynamicResource PrimaryText}"/>
|
|
</ScrollViewer>
|
|
<DataGrid x:Name="PreviewDataGrid" Visibility="Collapsed"
|
|
AutoGenerateColumns="True" IsReadOnly="True"
|
|
HeadersVisibility="Column" GridLinesVisibility="All"
|
|
Background="Transparent" Foreground="{DynamicResource PrimaryText}"
|
|
BorderThickness="0" CanUserAddRows="False"
|
|
RowBackground="{DynamicResource HintBackground}" AlternatingRowBackground="{DynamicResource ItemHoverBackground}"
|
|
ColumnHeaderHeight="30" RowHeight="28" FontSize="11.5"/>
|
|
<TextBlock x:Name="PreviewEmpty" Text="미리보기할 파일이 없습니다"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
FontSize="12" Foreground="{DynamicResource SecondaryText}"
|
|
Visibility="Collapsed"/>
|
|
</Grid>
|
|
</DockPanel>
|
|
</Border>
|
|
|
|
<!-- 리사이즈 그립 -->
|
|
<Thumb x:Name="ResizeGrip" Grid.Column="2"
|
|
Width="14" Height="14"
|
|
HorizontalAlignment="Right" VerticalAlignment="Bottom"
|
|
Cursor="SizeNWSE" Opacity="0.3"
|
|
DragDelta="ResizeGrip_DragDelta">
|
|
<Thumb.Template>
|
|
<ControlTemplate>
|
|
<TextBlock Text="" FontFamily="Segoe MDL2 Assets" FontSize="10"
|
|
Foreground="{DynamicResource SecondaryText}"/>
|
|
</ControlTemplate>
|
|
</Thumb.Template>
|
|
</Thumb>
|
|
</Grid>
|
|
</Border>
|
|
</Window>
|