소스(Core/Shell/Launcher)와 실행 PC가 받아갈 업데이트 파일(dist)을 함께 올린다. Launcher가 켤 때 이 저장소의 dist와 D:\UbisamPlatform\bin을 비교해 새 버전이면 받아간다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
804 lines
46 KiB
XML
804 lines
46 KiB
XML
<!-- 입력 컨트롤 · 표 스타일. 전부 암시적 스타일(x:Key 없음)이라
|
|
각 View를 고치지 않아도 셸 안의 모든 TextBox/ComboBox/CheckBox/Button/ListBox/ListView에 적용된다.
|
|
특정 위치만 예외로 두고 싶으면 그 컨트롤에 Style="{x:Null}"을 주면 된다. -->
|
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
|
|
|
<!-- ══ TextBox ══ -->
|
|
<Style TargetType="TextBox">
|
|
<Setter Property="MinHeight" Value="34"/>
|
|
<Setter Property="Padding" Value="10,0"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="13.5"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.ContentForeground}"/>
|
|
<Setter Property="CaretBrush" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter Property="SelectionBrush" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="TextBox">
|
|
<Border x:Name="Bd"
|
|
Background="{DynamicResource Ubisam.Brush.Input.Background}"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
|
BorderThickness="1"
|
|
SnapsToDevicePixels="True">
|
|
<ScrollViewer x:Name="PART_ContentHost"
|
|
Margin="{TemplateBinding Padding}"
|
|
VerticalAlignment="Center"
|
|
Focusable="False"
|
|
HorizontalScrollBarVisibility="Hidden"
|
|
VerticalScrollBarVisibility="Hidden"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Input.BorderHover}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsKeyboardFocusWithin" Value="True">
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter TargetName="Bd" Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect Color="{DynamicResource Ubisam.Color.AccentGlow}"
|
|
BlurRadius="6" ShadowDepth="0" Opacity="0.55"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Trigger>
|
|
<MultiTrigger>
|
|
<MultiTrigger.Conditions>
|
|
<Condition Property="IsEnabled" Value="False"/>
|
|
</MultiTrigger.Conditions>
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Input.DisabledBackground}"/>
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Input.DisabledBorder}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Muted}"/>
|
|
</MultiTrigger>
|
|
<Trigger Property="IsReadOnly" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Input.DisabledBackground}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ══ ComboBox ══ -->
|
|
<Style x:Key="Ubisam.Style.ComboToggle" TargetType="ToggleButton">
|
|
<Setter Property="Focusable" Value="False"/>
|
|
<Setter Property="ClickMode" Value="Press"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Border x:Name="Bd"
|
|
Background="{DynamicResource Ubisam.Brush.Input.Background}"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
|
BorderThickness="1"
|
|
SnapsToDevicePixels="True">
|
|
<Path x:Name="Arrow"
|
|
Data="M 0,0 L 5,5 L 10,0"
|
|
Stroke="{DynamicResource Ubisam.Brush.Sidebar.Foreground}"
|
|
StrokeThickness="1.5"
|
|
StrokeStartLineCap="Round"
|
|
StrokeEndLineCap="Round"
|
|
StrokeLineJoin="Round"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Center"
|
|
Margin="0,0,11,0"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Input.BorderHover}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter TargetName="Arrow" Property="Stroke" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter TargetName="Arrow" Property="RenderTransformOrigin" Value="0.5,0.5"/>
|
|
<Setter TargetName="Arrow" Property="RenderTransform">
|
|
<Setter.Value>
|
|
<ScaleTransform ScaleY="-1"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Input.DisabledBackground}"/>
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Input.DisabledBorder}"/>
|
|
<Setter TargetName="Arrow" Property="Stroke" Value="{DynamicResource Ubisam.Brush.Muted}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="ComboBoxItem">
|
|
<Setter Property="Padding" Value="11,8"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="13.5"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.ContentForeground}"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ComboBoxItem">
|
|
<Border x:Name="Bd" Background="Transparent" Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedBackground}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Accent.Fill}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Accent.OnFill}"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="ComboBox">
|
|
<Setter Property="MinHeight" Value="34"/>
|
|
<Setter Property="Padding" Value="10,0,30,0"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="13.5"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.ContentForeground}"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ComboBox">
|
|
<Grid>
|
|
<ToggleButton x:Name="ToggleButton"
|
|
Style="{StaticResource Ubisam.Style.ComboToggle}"
|
|
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"/>
|
|
<ContentPresenter x:Name="ContentSite"
|
|
Content="{TemplateBinding SelectionBoxItem}"
|
|
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
|
|
ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}"
|
|
Margin="{TemplateBinding Padding}"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left"
|
|
IsHitTestVisible="False"/>
|
|
<TextBox x:Name="PART_EditableTextBox"
|
|
Style="{x:Null}"
|
|
Visibility="Collapsed"
|
|
Margin="{TemplateBinding Padding}"
|
|
Background="Transparent"
|
|
BorderThickness="0"/>
|
|
<Popup x:Name="Popup"
|
|
Placement="Bottom"
|
|
IsOpen="{TemplateBinding IsDropDownOpen}"
|
|
AllowsTransparency="True"
|
|
Focusable="False"
|
|
PopupAnimation="Fade">
|
|
<Border MinWidth="{TemplateBinding ActualWidth}"
|
|
MaxHeight="{TemplateBinding MaxDropDownHeight}"
|
|
Background="{DynamicResource Ubisam.Brush.Input.Background}"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
|
BorderThickness="1,0,1,1"
|
|
Effect="{DynamicResource Ubisam.Effect.Popup}">
|
|
<ScrollViewer>
|
|
<ItemsPresenter/>
|
|
</ScrollViewer>
|
|
</Border>
|
|
</Popup>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsEditable" Value="True">
|
|
<Setter TargetName="PART_EditableTextBox" Property="Visibility" Value="Visible"/>
|
|
<Setter TargetName="ContentSite" Property="Visibility" Value="Collapsed"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Muted}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ══ CheckBox ══ -->
|
|
<Style TargetType="CheckBox">
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="13.5"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.ContentForeground}"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="CheckBox">
|
|
<StackPanel Orientation="Horizontal">
|
|
<Border x:Name="Box"
|
|
Width="17" Height="17"
|
|
Background="{DynamicResource Ubisam.Brush.Input.Background}"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
|
BorderThickness="1"
|
|
SnapsToDevicePixels="True"
|
|
VerticalAlignment="Center">
|
|
<Path x:Name="Check"
|
|
Data="M 1,6 L 5,10 L 12,2"
|
|
Stroke="{DynamicResource Ubisam.Brush.Accent.OnFill}"
|
|
StrokeThickness="2"
|
|
StrokeStartLineCap="Round"
|
|
StrokeEndLineCap="Round"
|
|
StrokeLineJoin="Round"
|
|
Visibility="Collapsed"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ContentPresenter Margin="9,0,0,0" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Box" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Input.BorderHover}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter TargetName="Box" Property="Background" Value="{DynamicResource Ubisam.Brush.Accent.Fill}"/>
|
|
<Setter TargetName="Box" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Accent.Fill}"/>
|
|
<Setter TargetName="Check" Property="Visibility" Value="Visible"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="Box" Property="Background" Value="{DynamicResource Ubisam.Brush.Input.DisabledBackground}"/>
|
|
<Setter TargetName="Box" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Input.DisabledBorder}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Muted}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ══ Button ══
|
|
암시적 = 보조(외곽선). 주 동작에는 Style="{StaticResource Ubisam.Style.Button.Primary}" -->
|
|
<Style TargetType="Button">
|
|
<Setter Property="MinHeight" Value="34"/>
|
|
<Setter Property="Padding" Value="20,8"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="13.5"/>
|
|
<Setter Property="FontWeight" Value="Medium"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.Foreground}"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="Bd"
|
|
Background="{DynamicResource Ubisam.Brush.Input.Background}"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
|
BorderThickness="1"
|
|
Padding="{TemplateBinding Padding}"
|
|
SnapsToDevicePixels="True">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedBackground}"/>
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="Bd" Property="Opacity" Value="0.45"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="Ubisam.Style.Button.Primary" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Accent.OnFill}"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="Bd"
|
|
Background="{DynamicResource Ubisam.Brush.Accent.Fill}"
|
|
BorderThickness="0"
|
|
Padding="{TemplateBinding Padding}"
|
|
SnapsToDevicePixels="True">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Opacity" Value="0.88"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="Bd" Property="Opacity" Value="0.75"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter TargetName="Bd" Property="Opacity" Value="0.45"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="Ubisam.Style.Button.Ghost" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="Bd" Background="Transparent" Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ══ 일반 ListBox (설정 키 목록 등) ══ -->
|
|
<Style TargetType="ListBoxItem">
|
|
<Setter Property="Padding" Value="11,8"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="13.5"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.ContentForeground}"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ListBoxItem">
|
|
<Border x:Name="Bd"
|
|
Background="Transparent"
|
|
BorderThickness="2,0,0,0"
|
|
BorderBrush="Transparent"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedBackground}"/>
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="ListBox">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Input.Background}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Input.Border}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Padding" Value="0,4"/>
|
|
</Style>
|
|
|
|
<!-- ══ ListView + GridView (로그 표) ══ -->
|
|
<Style TargetType="GridViewColumnHeader">
|
|
<Setter Property="Padding" Value="11,9"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="11"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.Foreground}"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Left"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="GridViewColumnHeader">
|
|
<Border x:Name="Bd"
|
|
Background="{DynamicResource Ubisam.Brush.Table.HeaderBackground}"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
|
BorderThickness="0,0,1,1"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="Ubisam.Style.TableRow" TargetType="ListViewItem">
|
|
<Setter Property="Padding" Value="0"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="12.5"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.ContentForeground}"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ListViewItem">
|
|
<Border x:Name="Bd"
|
|
Background="Transparent"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Table.RowBorder}"
|
|
BorderThickness="0,0,0,1"
|
|
Padding="0,4">
|
|
<GridViewRowPresenter Content="{TemplateBinding Content}"
|
|
Columns="{TemplateBinding GridView.ColumnCollection}"
|
|
VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedBackground}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="ListView">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Input.Background}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Input.Border}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="ItemContainerStyle" Value="{StaticResource Ubisam.Style.TableRow}"/>
|
|
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
|
|
</Style>
|
|
|
|
<!-- ══ DataGrid ══
|
|
ListView+GridView가 읽기 전용 표라면 DataGrid는 편집 가능한 격자다.
|
|
셀 구분선은 세로만 그리고(가로는 행 경계가 담당), 선택은 행 머리의 accent 바 + 행 틴트로 알린다. -->
|
|
|
|
<!-- 정렬 화살표 -->
|
|
<Geometry x:Key="Ubisam.Geometry.SortAsc">M1,6 L5.5,1 L10,6</Geometry>
|
|
<Geometry x:Key="Ubisam.Geometry.SortDesc">M1,1 L5.5,6 L10,1</Geometry>
|
|
|
|
<Style TargetType="DataGridColumnHeader">
|
|
<Setter Property="Padding" Value="11,10"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="11"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.Foreground}"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Left"/>
|
|
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="DataGridColumnHeader">
|
|
<Grid>
|
|
<Border x:Name="Bd"
|
|
Background="{DynamicResource Ubisam.Brush.Table.HeaderBackground}"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Table.GridLine}"
|
|
BorderThickness="0,0,1,0"
|
|
Padding="{TemplateBinding Padding}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<ContentPresenter Grid.Column="0"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
|
|
<Path x:Name="SortArrow"
|
|
Grid.Column="1"
|
|
Margin="7,0,0,0"
|
|
Data="{StaticResource Ubisam.Geometry.SortDesc}"
|
|
Stroke="{DynamicResource Ubisam.Brush.Accent}"
|
|
StrokeThickness="2"
|
|
StrokeStartLineCap="Round"
|
|
StrokeEndLineCap="Round"
|
|
StrokeLineJoin="Round"
|
|
VerticalAlignment="Center"
|
|
Visibility="Collapsed"/>
|
|
</Grid>
|
|
</Border>
|
|
<Thumb x:Name="PART_RightHeaderGripper"
|
|
HorizontalAlignment="Right"
|
|
Width="6"
|
|
Cursor="SizeWE"
|
|
Opacity="0">
|
|
<Thumb.Template>
|
|
<ControlTemplate TargetType="Thumb">
|
|
<Border Background="Transparent"/>
|
|
</ControlTemplate>
|
|
</Thumb.Template>
|
|
</Thumb>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
</Trigger>
|
|
<Trigger Property="SortDirection" Value="Ascending">
|
|
<Setter TargetName="SortArrow" Property="Visibility" Value="Visible"/>
|
|
<Setter TargetName="SortArrow" Property="Data" Value="{StaticResource Ubisam.Geometry.SortAsc}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
</Trigger>
|
|
<Trigger Property="SortDirection" Value="Descending">
|
|
<Setter TargetName="SortArrow" Property="Visibility" Value="Visible"/>
|
|
<Setter TargetName="SortArrow" Property="Data" Value="{StaticResource Ubisam.Geometry.SortDesc}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- 행 머리: 폭 26, 선택 시 accent 바가 채워진다 -->
|
|
<Style TargetType="DataGridRowHeader">
|
|
<Setter Property="Width" Value="26"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="DataGridRowHeader">
|
|
<Border x:Name="Bd"
|
|
Background="Transparent"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Table.GridLine}"
|
|
BorderThickness="0,0,1,0"/>
|
|
<ControlTemplate.Triggers>
|
|
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
</DataTrigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="DataGridCell">
|
|
<Setter Property="Padding" Value="11,9"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.ContentForeground}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="DataGridCell">
|
|
<Border x:Name="Bd"
|
|
Background="Transparent"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Table.RowBorder}"
|
|
BorderThickness="0,0,1,0"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<!-- 편집 중인 셀만 accent 테두리 + 내부 여백을 줄여 입력칸을 보여준다 -->
|
|
<Trigger Property="IsEditing" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Input.Background}"/>
|
|
<Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter TargetName="Bd" Property="BorderThickness" Value="1"/>
|
|
<Setter TargetName="Bd" Property="Padding" Value="6,4"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="DataGridRow">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="12.5"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.ContentForeground}"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="AlternationIndex" Value="1">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Table.AltRowBackground}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.HoverBackground}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedBackground}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Sidebar.SelectedForeground}"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<Style TargetType="DataGrid">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Input.Background}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Input.Border}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="RowBackground" Value="Transparent"/>
|
|
<Setter Property="AlternatingRowBackground" Value="{DynamicResource Ubisam.Brush.Table.AltRowBackground}"/>
|
|
<Setter Property="RowHeight" Value="34"/>
|
|
<Setter Property="ColumnHeaderHeight" Value="34"/>
|
|
<Setter Property="GridLinesVisibility" Value="Horizontal"/>
|
|
<Setter Property="HorizontalGridLinesBrush" Value="{DynamicResource Ubisam.Brush.Table.RowBorder}"/>
|
|
<Setter Property="VerticalGridLinesBrush" Value="{DynamicResource Ubisam.Brush.Table.RowBorder}"/>
|
|
<Setter Property="HeadersVisibility" Value="All"/>
|
|
<Setter Property="SelectionUnit" Value="FullRow"/>
|
|
<Setter Property="GridLinesVisibility" Value="All"/>
|
|
<Setter Property="AutoGenerateColumns" Value="False"/>
|
|
<Setter Property="CanUserAddRows" Value="False"/>
|
|
<Setter Property="CanUserDeleteRows" Value="False"/>
|
|
<Setter Property="CanUserResizeRows" Value="False"/>
|
|
<Setter Property="EnableRowVirtualization" Value="True"/>
|
|
</Style>
|
|
|
|
<!-- 수치 열에 붙일 셀 스타일: 우측 정렬 + 자릿수 고정 -->
|
|
<Style x:Key="Ubisam.Style.NumericCell" TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
|
|
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Right"/>
|
|
<Setter Property="TextBlock.TextAlignment" Value="Right"/>
|
|
</Style>
|
|
|
|
<!-- ══ 상태 태그 ══
|
|
표의 판정·레벨 같은 상태 열은 맨 텍스트가 아니라 태그로 그린다 (디자인 시스템 규칙).
|
|
DataGridTemplateColumn / GridViewColumn의 CellTemplate 안에서 쓴다. -->
|
|
<Style x:Key="Ubisam.Style.Tag" TargetType="Border">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Tag.NeutralBackground}"/>
|
|
<Setter Property="CornerRadius" Value="3"/>
|
|
<Setter Property="Padding" Value="10,3"/>
|
|
<Setter Property="HorizontalAlignment" Value="Left"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<Style x:Key="Ubisam.Style.TagText" TargetType="TextBlock">
|
|
<Setter Property="FontFamily" Value="{DynamicResource Ubisam.Font.Body}"/>
|
|
<Setter Property="FontSize" Value="11"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Tag.NeutralForeground}"/>
|
|
</Style>
|
|
|
|
<!-- 정상·완료: accent 옅은 채움 -->
|
|
<Style x:Key="Ubisam.Style.Tag.Accent" TargetType="Border" BasedOn="{StaticResource Ubisam.Style.Tag}">
|
|
<Setter Property="Background" Value="{DynamicResource Ubisam.Brush.Tag.AccentBackground}"/>
|
|
</Style>
|
|
<Style x:Key="Ubisam.Style.TagText.Accent" TargetType="TextBlock" BasedOn="{StaticResource Ubisam.Style.TagText}">
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Tag.AccentForeground}"/>
|
|
</Style>
|
|
|
|
<!-- 주의·재검: 외곽선만 (예외 행이 한눈에 걸리도록) -->
|
|
<Style x:Key="Ubisam.Style.Tag.Outline" TargetType="Border" BasedOn="{StaticResource Ubisam.Style.Tag}">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
</Style>
|
|
<Style x:Key="Ubisam.Style.TagText.Outline" TargetType="TextBlock" BasedOn="{StaticResource Ubisam.Style.TagText}">
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
</Style>
|
|
|
|
<!-- ══ Slider ══
|
|
트랙은 얇은 홈, 채워진 구간만 accent. 썸은 각진 세로 막대(다이얼이 아니라 계기 슬라이드). -->
|
|
<Style x:Key="Ubisam.Style.SliderThumb" TargetType="Thumb">
|
|
<Setter Property="Focusable" Value="False"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Thumb">
|
|
<Border x:Name="Bd"
|
|
Width="10" Height="20"
|
|
Background="{DynamicResource Ubisam.Brush.Accent.Fill}"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Accent}"
|
|
BorderThickness="1"
|
|
SnapsToDevicePixels="True"/>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsDragging" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="Slider">
|
|
<Setter Property="MinHeight" Value="24"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Slider">
|
|
<Grid VerticalAlignment="Center">
|
|
<!-- 트랙 홈 -->
|
|
<Border Height="4"
|
|
Background="{DynamicResource Ubisam.Brush.Input.DisabledBackground}"
|
|
BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"
|
|
BorderThickness="1"
|
|
VerticalAlignment="Center"
|
|
SnapsToDevicePixels="True"/>
|
|
<Track x:Name="PART_Track">
|
|
<Track.DecreaseRepeatButton>
|
|
<RepeatButton Command="Slider.DecreaseLarge"
|
|
Focusable="False"
|
|
Height="4"
|
|
VerticalAlignment="Center">
|
|
<RepeatButton.Template>
|
|
<ControlTemplate TargetType="RepeatButton">
|
|
<!-- 채워진 구간 -->
|
|
<Border Background="{DynamicResource Ubisam.Brush.Accent}"
|
|
Height="4"
|
|
VerticalAlignment="Center"
|
|
SnapsToDevicePixels="True"/>
|
|
</ControlTemplate>
|
|
</RepeatButton.Template>
|
|
</RepeatButton>
|
|
</Track.DecreaseRepeatButton>
|
|
<Track.IncreaseRepeatButton>
|
|
<RepeatButton Command="Slider.IncreaseLarge" Focusable="False">
|
|
<RepeatButton.Template>
|
|
<ControlTemplate TargetType="RepeatButton">
|
|
<Border Background="Transparent"/>
|
|
</ControlTemplate>
|
|
</RepeatButton.Template>
|
|
</RepeatButton>
|
|
</Track.IncreaseRepeatButton>
|
|
<Track.Thumb>
|
|
<Thumb Style="{StaticResource Ubisam.Style.SliderThumb}"/>
|
|
</Track.Thumb>
|
|
</Track>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Opacity" Value="0.45"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- ══ ScrollBar ══
|
|
폭 10의 얇은 막대. 트랙은 비우고 썸만 회색 — hover에서 accent로. 화살표 버튼은 없앤다. -->
|
|
<Style x:Key="Ubisam.Style.ScrollThumb" TargetType="Thumb">
|
|
<Setter Property="Focusable" Value="False"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Thumb">
|
|
<Border x:Name="Bd"
|
|
Background="{DynamicResource Ubisam.Brush.Input.BorderHover}"
|
|
SnapsToDevicePixels="True"/>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsDragging" Value="True">
|
|
<Setter TargetName="Bd" Property="Background" Value="{DynamicResource Ubisam.Brush.Accent}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="ScrollBar">
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Width" Value="10"/>
|
|
<Setter Property="MinWidth" Value="10"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ScrollBar">
|
|
<Grid Background="{TemplateBinding Background}">
|
|
<Track x:Name="PART_Track" IsDirectionReversed="True">
|
|
<Track.DecreaseRepeatButton>
|
|
<RepeatButton Command="ScrollBar.PageUpCommand" Focusable="False">
|
|
<RepeatButton.Template>
|
|
<ControlTemplate TargetType="RepeatButton">
|
|
<Border Background="Transparent"/>
|
|
</ControlTemplate>
|
|
</RepeatButton.Template>
|
|
</RepeatButton>
|
|
</Track.DecreaseRepeatButton>
|
|
<Track.IncreaseRepeatButton>
|
|
<RepeatButton Command="ScrollBar.PageDownCommand" Focusable="False">
|
|
<RepeatButton.Template>
|
|
<ControlTemplate TargetType="RepeatButton">
|
|
<Border Background="Transparent"/>
|
|
</ControlTemplate>
|
|
</RepeatButton.Template>
|
|
</RepeatButton>
|
|
</Track.IncreaseRepeatButton>
|
|
<Track.Thumb>
|
|
<Thumb Style="{StaticResource Ubisam.Style.ScrollThumb}" Margin="3,0"/>
|
|
</Track.Thumb>
|
|
</Track>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="Orientation" Value="Horizontal">
|
|
<Setter Property="Height" Value="10"/>
|
|
<Setter Property="MinHeight" Value="10"/>
|
|
<Setter Property="Width" Value="Auto"/>
|
|
<Setter Property="MinWidth" Value="0"/>
|
|
<Setter TargetName="PART_Track" Property="IsDirectionReversed" Value="False"/>
|
|
<Setter TargetName="PART_Track" Property="Orientation" Value="Horizontal"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
</ResourceDictionary>
|