Files
EbayListingTool/EbayListingTool/Views/SingleItemView.xaml
Peter Foster bd59db724a Apply dark theme (Dark.Indigo) across all views
Switch MahApps.Metro base theme from Light.Indigo to Dark.Indigo in
App.xaml. Fix hardcoded light-specific colours in all five views:

- MainWindow: overlay backgrounds from hardcoded light-blue gradients
  to ThemeBackground; overlay text updated to ThemeForeground / Gray5
- SingleItemView: listing URL colour from hardcoded #1565C0 (invisible
  on dark) to Accent brush
- PhotoAnalysisView / BulkImportView / SavedListingsView: dynamic
  resource brushes already used; no structural changes needed

Semantic colours (green/red/amber indicators, AI gradient buttons,
white text on coloured backgrounds) left unchanged as they read
correctly on dark surfaces.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 02:54:01 +01:00

567 lines
34 KiB
XML

<UserControl x:Class="EbayListingTool.Views.SingleItemView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
Loaded="UserControl_Loaded">
<UserControl.Resources>
<!-- Section card — subtle bordered/shaded panel wrapping a group of fields -->
<Style x:Key="SectionCard" TargetType="Border">
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="4"/>
<Setter Property="Padding" Value="14,12"/>
<Setter Property="Margin" Value="0,0,0,10"/>
<Setter Property="BorderBrush" Value="{DynamicResource MahApps.Brushes.Gray8}"/>
<Setter Property="Background" Value="{DynamicResource MahApps.Brushes.Gray10}"/>
</Style>
<!-- Upper-case accent section heading used inside each card -->
<Style x:Key="SectionHeading" TargetType="TextBlock">
<Setter Property="FontSize" Value="10"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Foreground" Value="{DynamicResource MahApps.Brushes.Accent}"/>
<Setter Property="Margin" Value="0,0,0,0"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<!-- Standard field label inside a card -->
<Style x:Key="FieldLabel" TargetType="TextBlock">
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Margin" Value="0,0,0,4"/>
<Setter Property="Foreground" Value="{DynamicResource MahApps.Brushes.Gray2}"/>
</Style>
<!-- Small red asterisk for required fields -->
<Style x:Key="RequiredAsterisk" TargetType="TextBlock">
<Setter Property="Text" Value=" *"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="Foreground" Value="#E53935"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="0,0,0,4"/>
<Setter Property="ToolTip" Value="Required"/>
</Style>
<!-- AI buttons: indigo-to-violet gradient, icon + label -->
<Style x:Key="AiButton" TargetType="Button"
BasedOn="{StaticResource MahApps.Styles.Button.Square}">
<Setter Property="Height" Value="28"/>
<Setter Property="Padding" Value="8,0"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#7C3AED" Offset="0"/>
<GradientStop Color="#4F46E5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#8B5CF6" Offset="0"/>
<GradientStop Color="#6366F1" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.45"/>
</Trigger>
</Style.Triggers>
</Style>
<!-- Primary post/action button -->
<Style x:Key="PostButton" TargetType="Button"
BasedOn="{StaticResource MahApps.Styles.Button.Square.Accent}">
<Setter Property="Height" Value="36"/>
<Setter Property="Padding" Value="20,0"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="FontWeight" Value="SemiBold"/>
</Style>
</UserControl.Resources>
<Grid Margin="16,12,16,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="8"/>
<ColumnDefinition Width="290"/>
</Grid.ColumnDefinitions>
<!-- ================================================================
LEFT COLUMN — form fields grouped into section cards
================================================================ -->
<ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto">
<StackPanel>
<!-- LISTING DETAILS -->
<Border Style="{StaticResource SectionCard}">
<StackPanel>
<!-- Card header row -->
<StackPanel Orientation="Horizontal" Margin="0,0,0,10">
<iconPacks:PackIconMaterial Kind="TagOutline" Width="13" Height="13"
Margin="0,0,6,0" VerticalAlignment="Center"
Foreground="{DynamicResource MahApps.Brushes.Accent}"/>
<TextBlock Text="LISTING DETAILS" Style="{StaticResource SectionHeading}"/>
</StackPanel>
<!-- Title label row with required asterisk -->
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource FieldLabel}" Text="Title"/>
<TextBlock Style="{StaticResource RequiredAsterisk}"/>
</StackPanel>
<!-- Title + AI Title button -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="TitleBox"
mah:TextBoxHelper.Watermark="Item title (max 80 characters)"
MaxLength="80"
TextChanged="TitleBox_TextChanged"/>
<Button Grid.Column="1" Margin="6,0,0,0"
Style="{StaticResource AiButton}"
Click="AiTitle_Click"
ToolTip="Ask Claude to write a keyword-rich eBay title based on your item details">
<StackPanel Orientation="Horizontal">
<mah:ProgressRing x:Name="TitleSpinner"
Width="11" Height="11" Margin="0,0,4,0"
Foreground="White" Visibility="Collapsed"/>
<iconPacks:PackIconMaterial x:Name="TitleAiIcon"
Kind="AutoFix" Width="12" Height="12"
Margin="0,0,4,0" VerticalAlignment="Center"/>
<TextBlock Text="AI Title" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</Grid>
<!-- Visual character-count progress bar -->
<Grid Margin="0,5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- Track -->
<Border Grid.Column="0" Height="4" CornerRadius="2"
Background="{DynamicResource MahApps.Brushes.Gray8}"
VerticalAlignment="Center" Margin="0,0,8,0">
<!-- Fill — width set in code-behind via TitleCountBar.Width -->
<Border x:Name="TitleCountBar" HorizontalAlignment="Left"
Height="4" CornerRadius="2" Width="0"
Background="{DynamicResource MahApps.Brushes.Accent}"/>
</Border>
<TextBlock x:Name="TitleCount" Grid.Column="1"
Text="0 / 80" FontSize="10"
Foreground="{DynamicResource MahApps.Brushes.Gray5}"
VerticalAlignment="Center"/>
</Grid>
<!-- Category label row with required asterisk -->
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<TextBlock Style="{StaticResource FieldLabel}" Text="Category" Margin="0,0,0,4"/>
<TextBlock Style="{StaticResource RequiredAsterisk}"/>
</StackPanel>
<!-- Category search -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="CategoryBox"
mah:TextBoxHelper.Watermark="Start typing to search categories..."
TextChanged="CategoryBox_TextChanged"
KeyDown="CategoryBox_KeyDown"/>
<Border Grid.Column="1" Margin="8,0,0,0" CornerRadius="3"
Padding="6,2" VerticalAlignment="Center"
Background="{DynamicResource MahApps.Brushes.Gray8}">
<TextBlock x:Name="CategoryIdLabel" FontSize="11"
Foreground="{DynamicResource MahApps.Brushes.Gray4}"
Text="no category"/>
</Border>
</Grid>
<!-- Category dropdown suggestions -->
<ListBox x:Name="CategorySuggestionsList" MaxHeight="140"
SelectionChanged="CategorySuggestionsList_SelectionChanged"
Visibility="Collapsed" Margin="0,2,0,0"
Background="{DynamicResource MahApps.Brushes.Gray9}"
BorderBrush="{DynamicResource MahApps.Brushes.Gray7}"
BorderThickness="1">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding CategoryPath}" FontSize="12" Padding="4,3"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!-- Condition + Format -->
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="12"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBlock Style="{StaticResource FieldLabel}" Text="Condition"/>
<ComboBox x:Name="ConditionBox"
SelectionChanged="ConditionBox_SelectionChanged">
<ComboBoxItem Content="New" Tag="New"
ToolTip="Brand new, unopened (eBay: New)"/>
<ComboBoxItem Content="Open Box" Tag="OpenBox"
ToolTip="Opened but unused (eBay: Open box)"/>
<ComboBoxItem Content="Refurbished" Tag="Refurbished"
ToolTip="Professionally restored (eBay: Seller refurbished)"/>
<ComboBoxItem Content="Used" Tag="Used" IsSelected="True"
ToolTip="Previously used, working (eBay: Used)"/>
<ComboBoxItem Content="For Parts / Not Working" Tag="ForParts"
ToolTip="Not fully working (eBay: For parts or not working)"/>
</ComboBox>
</StackPanel>
<StackPanel Grid.Column="2">
<TextBlock Style="{StaticResource FieldLabel}" Text="Format"/>
<ComboBox x:Name="FormatBox">
<ComboBoxItem Content="Buy It Now" IsSelected="True"/>
<ComboBoxItem Content="Auction"/>
</ComboBox>
</StackPanel>
</Grid>
</StackPanel>
</Border>
<!-- DESCRIPTION -->
<Border Style="{StaticResource SectionCard}">
<StackPanel>
<Grid Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconMaterial Kind="TextBox" Width="13" Height="13"
Margin="0,0,6,0" VerticalAlignment="Center"
Foreground="{DynamicResource MahApps.Brushes.Accent}"/>
<TextBlock Text="DESCRIPTION" Style="{StaticResource SectionHeading}"/>
</StackPanel>
<Button Grid.Column="1" Style="{StaticResource AiButton}"
Click="AiDescription_Click"
ToolTip="Ask Claude to write a full product description">
<StackPanel Orientation="Horizontal">
<mah:ProgressRing x:Name="DescSpinner"
Width="11" Height="11" Margin="0,0,4,0"
Foreground="White" Visibility="Collapsed"/>
<iconPacks:PackIconMaterial x:Name="DescAiIcon"
Kind="AutoFix" Width="12" Height="12"
Margin="0,0,4,0" VerticalAlignment="Center"/>
<TextBlock Text="AI Description" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</Grid>
<TextBox x:Name="DescriptionBox" Height="150" AcceptsReturn="True"
TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"
mah:TextBoxHelper.Watermark="Describe the item, condition, what's included..."
Style="{DynamicResource MahApps.Styles.TextBox}"
TextChanged="DescriptionBox_TextChanged"/>
<!-- Description character count progress bar (soft limit 2000) -->
<Grid Margin="0,5,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Height="4" CornerRadius="2"
Background="{DynamicResource MahApps.Brushes.Gray8}"
VerticalAlignment="Center" Margin="0,0,8,0">
<Border x:Name="DescCountBar" HorizontalAlignment="Left"
Height="4" CornerRadius="2" Width="0"
Background="{DynamicResource MahApps.Brushes.Accent}"/>
</Border>
<TextBlock x:Name="DescCount" Grid.Column="1"
Text="0 / 2000" FontSize="10"
Foreground="{DynamicResource MahApps.Brushes.Gray5}"
VerticalAlignment="Center"/>
</Grid>
</StackPanel>
</Border>
<!-- PRICING & LOGISTICS -->
<Border Style="{StaticResource SectionCard}">
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,10">
<iconPacks:PackIconMaterial Kind="CurrencyGbp" Width="13" Height="13"
Margin="0,0,6,0" VerticalAlignment="Center"
Foreground="{DynamicResource MahApps.Brushes.Accent}"/>
<TextBlock Text="PRICING &amp; LOGISTICS" Style="{StaticResource SectionHeading}"/>
</StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="12"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="12"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Price with inline AI button -->
<StackPanel Grid.Column="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Style="{StaticResource FieldLabel}" Text="Price (£)"/>
<TextBlock Grid.Column="1" Style="{StaticResource RequiredAsterisk}"/>
<Button Grid.Column="3" Style="{StaticResource AiButton}"
Click="AiPrice_Click"
Height="22" Padding="6,0" FontSize="11"
Margin="4,0,0,4"
ToolTip="Ask Claude to suggest a competitive eBay UK price">
<StackPanel Orientation="Horizontal">
<mah:ProgressRing x:Name="PriceSpinner"
Width="9" Height="9" Margin="0,0,3,0"
Foreground="White" Visibility="Collapsed"/>
<iconPacks:PackIconMaterial x:Name="PriceAiIcon"
Kind="AutoFix" Width="10" Height="10"
Margin="0,0,3,0" VerticalAlignment="Center"/>
<TextBlock Text="AI Price" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</Grid>
<mah:NumericUpDown x:Name="PriceBox" Minimum="0" Maximum="99999"
StringFormat="F2" Interval="0.5" Value="0"/>
</StackPanel>
<StackPanel Grid.Column="2">
<TextBlock Style="{StaticResource FieldLabel}" Text="Quantity"/>
<mah:NumericUpDown x:Name="QuantityBox" Minimum="1" Maximum="999"
Value="1" StringFormat="0"/>
</StackPanel>
<StackPanel Grid.Column="4">
<TextBlock Style="{StaticResource FieldLabel}" Text="Postage"/>
<ComboBox x:Name="PostageBox">
<ComboBoxItem Content="Royal Mail 1st Class (~£1.55)" IsSelected="True"/>
<ComboBoxItem Content="Royal Mail 2nd Class (~£1.20)"/>
<ComboBoxItem Content="Royal Mail Tracked 24 (~£2.90)"/>
<ComboBoxItem Content="Royal Mail Tracked 48 (~£2.60)"/>
<ComboBoxItem Content="Free Postage"/>
<ComboBoxItem Content="Collection Only"/>
</ComboBox>
</StackPanel>
</Grid>
<!-- Postcode — narrower input, left-aligned -->
<StackPanel Margin="0,10,0,0">
<TextBlock Style="{StaticResource FieldLabel}" Text="Item Postcode"/>
<TextBox x:Name="PostcodeBox"
mah:TextBoxHelper.Watermark="e.g. NR1 1AA"
MaxLength="10" Width="150"
HorizontalAlignment="Left"/>
</StackPanel>
<!-- AI price suggestion result -->
<Border x:Name="PriceSuggestionPanel" Visibility="Collapsed"
CornerRadius="4" Margin="0,12,0,0" Padding="12,10"
Background="#1A7C3AED"
BorderBrush="#7C3AED" BorderThickness="1">
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,6">
<iconPacks:PackIconMaterial Kind="AutoFix" Width="13" Height="13"
Margin="0,0,6,0" VerticalAlignment="Center"
Foreground="#7C3AED"/>
<TextBlock Text="AI Price Suggestion" FontWeight="Bold"
FontSize="12" Foreground="#7C3AED"/>
</StackPanel>
<TextBlock x:Name="PriceSuggestionText" TextWrapping="Wrap"
FontSize="12" Margin="0,0,0,8"
Foreground="{DynamicResource MahApps.Brushes.Gray2}"/>
<Button Content="Use this price" HorizontalAlignment="Left"
Click="UseSuggestedPrice_Click"
Style="{StaticResource AiButton}"
Height="26" Padding="10,0" FontSize="11"/>
</StackPanel>
</Border>
</StackPanel>
</Border>
<!-- ACTION BUTTONS -->
<StackPanel Orientation="Horizontal" Margin="0,2,0,8">
<!-- Post: primary accent + spinner overlay -->
<Button x:Name="PostBtn" Style="{StaticResource PostButton}"
Click="PostListing_Click">
<StackPanel Orientation="Horizontal">
<mah:ProgressRing x:Name="PostSpinner"
Width="14" Height="14" Margin="0,0,6,0"
Foreground="White" Visibility="Collapsed"/>
<iconPacks:PackIconMaterial x:Name="PostIcon"
Kind="Send" Width="14" Height="14"
Margin="0,0,6,0" VerticalAlignment="Center"/>
<TextBlock Text="Post to eBay" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button x:Name="SaveDraftBtn" Content="Save Draft"
Margin="8,0,0,0" Click="SaveDraft_Click"
Style="{DynamicResource MahApps.Styles.Button.Square}"
Height="36" Padding="14,0" FontSize="13"/>
<Button x:Name="NewListingBtn" Margin="8,0,0,0" Click="NewListing_Click"
Style="{DynamicResource MahApps.Styles.Button.Square}"
Height="36" Padding="14,0" FontSize="13">
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconMaterial Kind="Refresh" Width="13" Height="13"
Margin="0,0,5,0" VerticalAlignment="Center"/>
<TextBlock Text="Clear" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</StackPanel>
<!-- Posted success banner -->
<Border x:Name="SuccessPanel" Visibility="Collapsed"
CornerRadius="4" Padding="14,10"
Background="#1A4CAF50" BorderBrush="#4CAF50" BorderThickness="1">
<StackPanel>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconMaterial Kind="CheckCircle" Width="16" Height="16"
Margin="0,0,8,0" VerticalAlignment="Center"
Foreground="#4CAF50"/>
<TextBlock Text="Posted! " FontWeight="Bold" VerticalAlignment="Center"
Foreground="#4CAF50"/>
<TextBlock x:Name="ListingUrlText" Foreground="{DynamicResource MahApps.Brushes.Accent}"
VerticalAlignment="Center"
Cursor="Hand" TextDecorations="Underline"
MouseLeftButtonUp="ListingUrl_Click"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,8,0,0">
<Button Content="Copy URL" Height="24" Padding="8,0" FontSize="11"
Click="CopyUrl_Click"
Style="{DynamicResource MahApps.Styles.Button.Square}"
ToolTip="Copy listing URL to clipboard"/>
<Button Content="Copy Title" Height="24" Padding="8,0" FontSize="11"
Margin="6,0,0,0" Click="CopyTitle_Click"
Style="{DynamicResource MahApps.Styles.Button.Square}"
ToolTip="Copy listing title to clipboard"/>
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
<!-- ================================================================
RIGHT COLUMN — photos panel
================================================================ -->
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- Header: label + count badge -->
<Grid Grid.Row="0" Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconMaterial Kind="ImageMultiple" Width="13" Height="13"
Margin="0,0,6,0" VerticalAlignment="Center"
Foreground="{DynamicResource MahApps.Brushes.Accent}"/>
<TextBlock Text="PHOTOS" Style="{StaticResource SectionHeading}"/>
</StackPanel>
<!-- Photo count badge -->
<Border Grid.Column="1" CornerRadius="10" Padding="8,2"
Background="{DynamicResource MahApps.Brushes.Gray8}">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="PhotoCountBadge" Text="0"
FontSize="12" FontWeight="Bold"
Foreground="{DynamicResource MahApps.Brushes.Gray2}"/>
<TextBlock Text=" / 12" FontSize="12"
Foreground="{DynamicResource MahApps.Brushes.Gray5}"/>
</StackPanel>
</Border>
</Grid>
<!-- Drop zone with dashed border, hover highlight -->
<Border Grid.Row="1"
x:Name="DropZone"
BorderBrush="{DynamicResource MahApps.Brushes.Gray7}"
BorderThickness="2" CornerRadius="4"
MinHeight="220"
AllowDrop="True" Drop="Photos_Drop" DragOver="Photos_DragOver"
DragEnter="DropZone_DragEnter" DragLeave="DropZone_DragLeave"
Background="{DynamicResource MahApps.Brushes.Gray10}">
<Border.Resources>
<!-- Dashed border via VisualBrush trickery is complex in WPF;
we use a solid thin border with hover accent colour instead -->
</Border.Resources>
<Grid>
<!-- Empty-state hint (hidden once photos added) -->
<StackPanel x:Name="DropHint" VerticalAlignment="Center"
HorizontalAlignment="Center"
IsHitTestVisible="False">
<iconPacks:PackIconMaterial Kind="ImagePlus"
Width="40" Height="40"
Margin="0,0,0,8"
HorizontalAlignment="Center"
Foreground="{DynamicResource MahApps.Brushes.Gray7}"/>
<TextBlock Text="Drag &amp; drop photos here"
Foreground="{DynamicResource MahApps.Brushes.Gray5}"
FontSize="12" HorizontalAlignment="Center"/>
<TextBlock Text="or use Browse below"
Foreground="{DynamicResource MahApps.Brushes.Gray7}"
FontSize="11" HorizontalAlignment="Center" Margin="0,3,0,0"/>
</StackPanel>
<!-- Thumbnails: each built in code-behind as a Grid with hover X overlay -->
<ScrollViewer VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled">
<WrapPanel x:Name="PhotosPanel" Margin="6"/>
</ScrollViewer>
</Grid>
</Border>
<!-- Browse / Clear actions -->
<Grid Grid.Row="2" Margin="0,8,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="8"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Click="BrowsePhotos_Click"
Style="{DynamicResource MahApps.Styles.Button.Square.Accent}"
Height="30">
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconMaterial Kind="FolderImage" Width="13" Height="13"
Margin="0,0,5,0" VerticalAlignment="Center"/>
<TextBlock Text="Browse..." VerticalAlignment="Center" FontSize="12"/>
</StackPanel>
</Button>
<Button Grid.Column="2" Click="ClearPhotos_Click"
Style="{DynamicResource MahApps.Styles.Button.Square}"
Height="30" Padding="10,0">
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconMaterial Kind="TrashCanOutline" Width="13" Height="13"
Margin="0,0,5,0" VerticalAlignment="Center"/>
<TextBlock Text="Clear" VerticalAlignment="Center" FontSize="12"/>
</StackPanel>
</Button>
</Grid>
</Grid>
</Grid>
</UserControl>