Files
DeskCore/MainWindow.xaml
2026-10-04 14:48:53 +00:00

956 lines
76 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<Window x:Class="DeskCore.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
Title="DeskCore" Icon="app.ico" Width="1120" Height="720" MinWidth="760" MinHeight="480"
Background="{DynamicResource BaseBrush}" Foreground="{DynamicResource TextBrush}"
FontFamily="{DynamicResource UiFont}" FontSize="14"
TextOptions.TextFormattingMode="Display" UseLayoutRounding="True"
WindowStartupLocation="CenterScreen">
<WindowChrome.WindowChrome>
<WindowChrome CaptionHeight="40" ResizeBorderThickness="6" GlassFrameThickness="0,0,0,1"
CornerRadius="0" UseAeroCaptionButtons="False"/>
</WindowChrome.WindowChrome>
<Window.Resources>
<!-- Kachelgrößen – werden je nach Ansicht im Code umgestellt -->
<sys:Double x:Key="TileWidth">108</sys:Double>
<sys:Double x:Key="TileHeight">116</sys:Double>
<sys:Double x:Key="TileIcon">48</sys:Double>
<Thickness x:Key="TileIconMargin">0,14,0,0</Thickness>
<!-- Eintrag in der Seitenleiste -->
<DataTemplate x:Key="NavTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<!-- Anzahl bzw. Zieh-Griff teilen sich diese Spalte – feste Mindestbreite, damit der Griff nicht ins Box-Symbol ragt -->
<ColumnDefinition Width="Auto" MinWidth="30"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Glyph}" FontFamily="{DynamicResource IconFont}" FontSize="16"
VerticalAlignment="Center" Margin="0,0,14,0">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding GlyphBrush}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding GlyphBrush}" Value="{x:Null}">
<Setter Property="Foreground" Value="{DynamicResource TextBrush}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Grid.Column="1" Text="{Binding Name}" TextTrimming="CharacterEllipsis" VerticalAlignment="Center"/>
<TextBlock Grid.Column="2" Text="&#xE8A1;" FontFamily="{DynamicResource IconFont}" FontSize="12" VerticalAlignment="Center"
Margin="8,0,0,0" Foreground="{DynamicResource TextTertiaryBrush}" ToolTip="Wird als Box auf dem Desktop angezeigt">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding HasFence}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Grid.Column="3" Text="{Binding Count}" FontSize="12" Foreground="{DynamicResource TextTertiaryBrush}"
VerticalAlignment="Center" HorizontalAlignment="Right" Margin="8,0,0,0">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="True"/>
<Condition Binding="{Binding IsDesktop}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Hidden"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<!-- Griff zum Umsortieren (nur beim Überfahren) -->
<TextBlock Grid.Column="3" Text="&#xE700;" FontFamily="{DynamicResource IconFont}" FontSize="14" Cursor="SizeNS"
Foreground="{DynamicResource TextSecondaryBrush}" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="10,0,0,0"
ToolTip="Ziehen zum Umsortieren (oder Alt+↑/↓)">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="True"/>
<Condition Binding="{Binding IsDesktop}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Visible"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</DataTemplate>
<!-- Kachel -->
<DataTemplate x:Key="TileTemplate">
<StackPanel Width="{DynamicResource TileWidth}" Height="{DynamicResource TileHeight}" ToolTip="{Binding ToolTip}">
<Grid Width="{DynamicResource TileIcon}" Height="{DynamicResource TileIcon}" Margin="{DynamicResource TileIconMargin}">
<Image Source="{Binding Icon}" RenderOptions.BitmapScalingMode="HighQuality">
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSorted}" Value="True">
<Setter Property="Opacity" Value="0.4"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<Border HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,-7,-5"
Width="20" Height="20" CornerRadius="10" Background="{DynamicResource SuccessBrush}"
BorderBrush="{DynamicResource LayerBrush}" BorderThickness="2">
<Border.Style>
<Style TargetType="Border">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSorted}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TextBlock Text="&#xE73E;" FontFamily="{DynamicResource IconFont}" FontSize="9" Foreground="White"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
<TextBlock Text="{Binding Name}" FontSize="12" TextAlignment="Center" TextWrapping="Wrap"
TextTrimming="CharacterEllipsis" MaxHeight="34" LineHeight="16" Margin="6,9,6,0"/>
</StackPanel>
</DataTemplate>
<!-- Listenzeile -->
<DataTemplate x:Key="ListTemplate">
<Grid Height="40" Margin="14,0,10,0" ToolTip="{Binding ToolTip}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding Icon}" Width="24" Height="24" Margin="0,0,14,0" RenderOptions.BitmapScalingMode="HighQuality"/>
<TextBlock Grid.Column="1" Text="{Binding Name}" VerticalAlignment="Center" TextTrimming="CharacterEllipsis"/>
<TextBlock Grid.Column="2" Text="{Binding LocationText}" VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
Foreground="{DynamicResource TextSecondaryBrush}" FontSize="12"/>
<TextBlock Grid.Column="3" Text="{Binding TypeText}" VerticalAlignment="Center" TextTrimming="CharacterEllipsis"
Foreground="{DynamicResource TextSecondaryBrush}" FontSize="12"/>
</Grid>
</DataTemplate>
<ItemsPanelTemplate x:Key="WrapPanelTemplate">
<WrapPanel/>
</ItemsPanelTemplate>
<ItemsPanelTemplate x:Key="StackPanelTemplate">
<VirtualizingStackPanel/>
</ItemsPanelTemplate>
<!-- Regelzeile in den Einstellungen -->
<DataTemplate x:Key="RuleTemplate">
<Grid Margin="0,0,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Style="{StaticResource SubtleButton}" Margin="0,0,8,0" Padding="8,5" MinHeight="0" Click="RuleKind_Click" Tag="{Binding}"
ToolTip="Umschalten zwischen „Name enthält“ und „Dateityp ist“">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding KindText}" Foreground="{DynamicResource TextSecondaryBrush}" Width="86"/>
<TextBlock Text="&#xE8AB;" FontFamily="{DynamicResource IconFont}" FontSize="10" VerticalAlignment="Center"
Foreground="{DynamicResource TextTertiaryBrush}" Margin="4,0,0,0"/>
</StackPanel>
</Button>
<TextBox Grid.Column="1" Text="{Binding Contains, UpdateSourceTrigger=PropertyChanged}" LostFocus="RuleText_LostFocus"/>
<TextBlock Grid.Column="2" Text="&#xE76C;" FontFamily="{DynamicResource IconFont}" FontSize="12" VerticalAlignment="Center"
Margin="12,0" Foreground="{DynamicResource TextSecondaryBrush}"/>
<Button Grid.Column="3" HorizontalContentAlignment="Stretch" Click="RuleCategory_Click" Tag="{Binding}">
<DockPanel>
<TextBlock DockPanel.Dock="Right" Text="&#xE70D;" FontFamily="{DynamicResource IconFont}" FontSize="10"
VerticalAlignment="Center" Margin="8,0,0,0"/>
<TextBlock Text="{Binding Category}" TextTrimming="CharacterEllipsis"/>
</DockPanel>
</Button>
<Button Grid.Column="4" Style="{StaticResource SubtleButton}" Margin="6,0,0,0" Click="RuleDelete_Click" Tag="{Binding}"
ToolTip="Regel entfernen">
<TextBlock Text="&#xE74D;" FontFamily="{DynamicResource IconFont}" FontSize="14"/>
</Button>
</Grid>
</DataTemplate>
</Window.Resources>
<Grid x:Name="RootGrid">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="280"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- ===== Titelleiste ===== -->
<Grid Grid.ColumnSpan="2">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="16,0,0,0">
<Image Source="app.ico" Width="16" Height="16" RenderOptions.BitmapScalingMode="HighQuality"/>
<TextBlock Text="DeskCore" FontSize="12" Margin="12,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top">
<Button x:Name="ThemeButton" Style="{StaticResource CaptionButton}" FontSize="14" Click="ThemeButton_Click"
WindowChrome.IsHitTestVisibleInChrome="True" ToolTip="Design: Hell / Dunkel">
<Button.ContextMenu>
<ContextMenu x:Name="ThemeMenu" Placement="Bottom"/>
</Button.ContextMenu>
</Button>
<Button Style="{StaticResource CaptionButton}" Content="&#xE921;" Click="Minimize_Click"
WindowChrome.IsHitTestVisibleInChrome="True" ToolTip="Minimieren"/>
<Button x:Name="MaxButton" Style="{StaticResource CaptionButton}" Content="&#xE922;" Click="Maximize_Click"
WindowChrome.IsHitTestVisibleInChrome="True" ToolTip="Maximieren"/>
<Button Style="{StaticResource CloseCaptionButton}" Content="&#xE8BB;" Click="Close_Click"
WindowChrome.IsHitTestVisibleInChrome="True" ToolTip="Schließen"/>
</StackPanel>
</Grid>
<!-- ===== Seitenleiste ===== -->
<DockPanel Grid.Row="1">
<ListBox x:Name="DesktopNav" DockPanel.Dock="Top" Margin="8,6,8,0"
ItemContainerStyle="{StaticResource NavItem}" ItemTemplate="{StaticResource NavTemplate}"
SelectionChanged="Nav_SelectionChanged"
AllowDrop="True" DragOver="Nav_DragOver" DragLeave="Nav_DragLeave" Drop="Nav_Drop"/>
<Grid DockPanel.Dock="Top" Margin="22,20,14,6">
<TextBlock Text="Kategorien" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource TextSecondaryBrush}"
VerticalAlignment="Center" ToolTip="Reihenfolge ändern: Kategorie mit der Maus ziehen, Alt+↑/↓ oder Rechtsklick"/>
<Button Style="{StaticResource SubtleButton}" HorizontalAlignment="Right" Padding="6,4" MinHeight="0"
Click="NewCategory_Click" ToolTip="Neue Kategorie (Strg+N)">
<TextBlock Text="&#xE710;" FontFamily="{DynamicResource IconFont}" FontSize="12"/>
</Button>
</Grid>
<StackPanel DockPanel.Dock="Bottom" Margin="8,8,8,12">
<Button Style="{StaticResource SubtleButton}" Padding="16,9" HorizontalContentAlignment="Left" Click="NewCategory_Click">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE710;" FontFamily="{DynamicResource IconFont}" FontSize="16" Margin="0,0,14,0"
VerticalAlignment="Center" Foreground="{DynamicResource AccentBrush}"/>
<TextBlock Text="Neue Kategorie" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<ListBox x:Name="SettingsNav" Margin="0,2,0,0" ItemContainerStyle="{StaticResource NavItem}"
SelectionChanged="SettingsNav_SelectionChanged">
<ListBoxItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE713;" FontFamily="{DynamicResource IconFont}" FontSize="16" Margin="0,0,14,0" VerticalAlignment="Center"/>
<TextBlock Text="Einstellungen" VerticalAlignment="Center"/>
</StackPanel>
</ListBoxItem>
</ListBox>
</StackPanel>
<!-- Start-Gruppen: ein Klick startet mehrere Programme -->
<DockPanel DockPanel.Dock="Bottom" Margin="0,10,0,0">
<Grid DockPanel.Dock="Top" Margin="22,0,14,6">
<TextBlock Text="Start-Gruppen" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource TextSecondaryBrush}"
VerticalAlignment="Center" ToolTip="Ein Klick startet mehrere Programme auf einmal"/>
<Button Style="{StaticResource SubtleButton}" HorizontalAlignment="Right" Padding="6,4" MinHeight="0"
Click="NewLaunchGroup_Click" ToolTip="Neue Start-Gruppe">
<TextBlock Text="&#xE710;" FontFamily="{DynamicResource IconFont}" FontSize="12"/>
</Button>
</Grid>
<Grid>
<ListBox x:Name="LaunchList" Margin="8,0" MaxHeight="190"
ItemContainerStyle="{StaticResource NavItem}" SelectionChanged="Nav_SelectionChanged"
AllowDrop="True" DragOver="LaunchList_DragOver" DragLeave="Nav_DragLeave" Drop="LaunchList_Drop"
ContextMenuOpening="LaunchList_ContextMenuOpening">
<ListBox.ContextMenu>
<ContextMenu x:Name="LaunchMenu"/>
</ListBox.ContextMenu>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Glyph}" FontFamily="{DynamicResource IconFont}" FontSize="14"
VerticalAlignment="Center" Margin="1,0,15,0">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding GlyphBrush}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding GlyphBrush}" Value="{x:Null}">
<Setter Property="Foreground" Value="{DynamicResource AccentBrush}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Grid.Column="1" Text="{Binding Name}" TextTrimming="CharacterEllipsis" VerticalAlignment="Center"/>
<!-- direkt starten, ohne die Gruppe zu öffnen -->
<Button Grid.Column="2" Style="{StaticResource SubtleButton}" Padding="6,3" MinHeight="0" Margin="6,0,-6,0"
Click="LaunchGroupPlay_Click" Tag="{Binding}" ToolTip="Alle Programme dieser Gruppe starten">
<TextBlock Text="&#xE768;" FontFamily="{DynamicResource IconFont}" FontSize="11"
Foreground="{DynamicResource AccentBrush}"/>
</Button>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock x:Name="NoLaunchGroupsText" Margin="24,0,24,4" TextWrapping="Wrap" FontSize="12"
Foreground="{DynamicResource TextTertiaryBrush}" IsHitTestVisible="False"
Text="Mehrere Programme mit einem Klick starten – mit + anlegen."/>
</Grid>
</DockPanel>
<Grid>
<ListBox x:Name="CategoryList" Margin="8,0"
ItemContainerStyle="{StaticResource NavItem}" ItemTemplate="{StaticResource NavTemplate}"
SelectionChanged="Nav_SelectionChanged"
PreviewMouseLeftButtonDown="CategoryList_PreviewMouseLeftButtonDown" PreviewMouseMove="CategoryList_PreviewMouseMove"
ContextMenuOpening="CategoryList_ContextMenuOpening"
AllowDrop="True" DragOver="Nav_DragOver" DragLeave="Nav_DragLeave" Drop="Nav_Drop">
<ListBox.ContextMenu>
<ContextMenu x:Name="CategoryMenu"/>
</ListBox.ContextMenu>
</ListBox>
<TextBlock x:Name="NoCategoriesText" Margin="24,8,24,0" TextWrapping="Wrap" FontSize="12"
Foreground="{DynamicResource TextTertiaryBrush}" IsHitTestVisible="False"
Text="Noch keine Kategorien. Lege unten deine erste an – z. B. „Spiele“, „Arbeit“ oder „Tools“."/>
</Grid>
</DockPanel>
<!-- ===== Inhalt ===== -->
<Border Grid.Row="1" Grid.Column="1" Background="{DynamicResource LayerBrush}"
BorderBrush="{DynamicResource LayerStrokeBrush}" BorderThickness="1,1,0,0" CornerRadius="8,0,0,0">
<Grid>
<DockPanel x:Name="BrowseView">
<!-- Kopfbereich -->
<Grid DockPanel.Dock="Top" Margin="36,26,30,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel VerticalAlignment="Center">
<TextBlock x:Name="HeaderText" FontFamily="{DynamicResource DisplayFont}" FontSize="28" FontWeight="SemiBold"
TextTrimming="CharacterEllipsis"/>
<TextBlock x:Name="SubText" Foreground="{DynamicResource TextSecondaryBrush}" Margin="0,2,0,0"/>
</StackPanel>
<Grid Grid.Column="1" Width="280" VerticalAlignment="Center" Margin="24,0,0,0">
<TextBox x:Name="SearchBox" Padding="36,6,30,6" TextChanged="SearchBox_TextChanged"
ToolTip="Sucht in allen Kategorien und auf dem Desktop (Strg+F)"/>
<TextBlock Text="&#xE721;" FontFamily="{DynamicResource IconFont}" FontSize="14" IsHitTestVisible="False"
Foreground="{DynamicResource TextSecondaryBrush}" VerticalAlignment="Center" Margin="12,0,0,0"/>
<TextBlock x:Name="SearchPlaceholder" Text="Suchen" IsHitTestVisible="False" VerticalAlignment="Center"
Margin="37,0,0,0" Foreground="{DynamicResource TextTertiaryBrush}"/>
<Button x:Name="ClearSearchBtn" Style="{StaticResource SubtleButton}" HorizontalAlignment="Right" Margin="0,0,3,0"
Padding="6,4" MinHeight="0" Visibility="Collapsed" Click="ClearSearch_Click" ToolTip="Suche leeren (Esc)">
<TextBlock Text="&#xE711;" FontFamily="{DynamicResource IconFont}" FontSize="10"/>
</Button>
</Grid>
<StackPanel Grid.Column="2" Orientation="Horizontal" VerticalAlignment="Center" Margin="6,0,0,0">
<Button x:Name="UndoButton" Style="{StaticResource SubtleButton}" Padding="9" Click="Undo_Click" IsEnabled="False"
ToolTip="Rückgängig (Strg+Z)">
<TextBlock Text="&#xE7A7;" FontFamily="{DynamicResource IconFont}" FontSize="16"/>
</Button>
<Button x:Name="ViewButton" Style="{StaticResource SubtleButton}" Padding="9" Click="ViewButton_Click" ToolTip="Ansicht">
<TextBlock x:Name="ViewGlyph" Text="&#xE8A9;" FontFamily="{DynamicResource IconFont}" FontSize="16"/>
<Button.ContextMenu>
<ContextMenu x:Name="ViewMenu" Placement="Bottom"/>
</Button.ContextMenu>
</Button>
<Button Style="{StaticResource SubtleButton}" Padding="9" Click="Refresh_Click" ToolTip="Aktualisieren (F5)">
<TextBlock Text="&#xE72C;" FontFamily="{DynamicResource IconFont}" FontSize="16"/>
</Button>
</StackPanel>
</Grid>
<!-- Befehlsleiste (nur bei Start-Gruppen) -->
<StackPanel x:Name="GroupCommands" DockPanel.Dock="Top" Orientation="Horizontal" Margin="30,14,30,6" Visibility="Collapsed">
<Button Style="{StaticResource AccentButton}" Click="LaunchCurrentGroup_Click" Margin="6,0,10,0" Padding="14,6">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE768;" FontFamily="{DynamicResource IconFont}" FontSize="14" Margin="0,0,10,0" VerticalAlignment="Center"/>
<TextBlock Text="Alle starten" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button Style="{StaticResource SubtleButton}" Click="EditLaunchGroup_Click" Margin="0,0,4,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE70F;" FontFamily="{DynamicResource IconFont}" FontSize="16" Margin="0,0,10,0" VerticalAlignment="Center"/>
<TextBlock Text="Bearbeiten" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button Style="{StaticResource SubtleButton}" Click="LaunchGroupShortcut_Click" Margin="0,0,4,0"
ToolTip="Legt ein Symbol auf den Desktop, das diese Gruppe startet">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE71B;" FontFamily="{DynamicResource IconFont}" FontSize="16" Margin="0,0,10,0" VerticalAlignment="Center"/>
<TextBlock Text="Verknüpfung auf den Desktop" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button Style="{StaticResource SubtleButton}" Click="DeleteLaunchGroup_Click">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE74D;" FontFamily="{DynamicResource IconFont}" FontSize="16" Margin="0,0,10,0" VerticalAlignment="Center"/>
<TextBlock Text="Gruppe löschen" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</StackPanel>
<!-- Befehlsleiste (nur bei Kategorien) -->
<StackPanel x:Name="CategoryCommands" DockPanel.Dock="Top" Orientation="Horizontal" Margin="30,14,30,6">
<Button Style="{StaticResource SubtleButton}" Click="EditCategory_Click" Margin="0,0,4,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE70F;" FontFamily="{DynamicResource IconFont}" FontSize="16" Margin="0,0,10,0" VerticalAlignment="Center"/>
<TextBlock Text="Bearbeiten" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button x:Name="FenceToggleButton" Style="{StaticResource SubtleButton}" Click="FenceToggle_Click" Margin="0,0,4,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE8A1;" FontFamily="{DynamicResource IconFont}" FontSize="16" Margin="0,0,10,0" VerticalAlignment="Center"/>
<TextBlock x:Name="FenceToggleText" Text="Als Box auf den Desktop" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button Style="{StaticResource SubtleButton}" Click="OpenFolder_Click" Margin="0,0,4,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xED25;" FontFamily="{DynamicResource IconFont}" FontSize="16" Margin="0,0,10,0" VerticalAlignment="Center"/>
<TextBlock Text="Im Explorer öffnen" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button Style="{StaticResource SubtleButton}" Click="DeleteCategory_Click">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE74D;" FontFamily="{DynamicResource IconFont}" FontSize="16" Margin="0,0,10,0" VerticalAlignment="Center"/>
<TextBlock Text="Kategorie löschen" VerticalAlignment="Center"/>
</StackPanel>
</Button>
</StackPanel>
<!-- Update verfügbar -->
<Border x:Name="UpdateBar" DockPanel.Dock="Top" Margin="36,20,36,0" Padding="16,10" CornerRadius="6" Visibility="Collapsed"
Background="{DynamicResource AccentSubtleBrush}" BorderBrush="{DynamicResource AccentBrush}" BorderThickness="1">
<DockPanel>
<TextBlock DockPanel.Dock="Left" Text="&#xE896;" FontFamily="{DynamicResource IconFont}" FontSize="18"
Foreground="{DynamicResource AccentBrush}" VerticalAlignment="Center" Margin="0,0,14,0"/>
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal" VerticalAlignment="Center">
<Button x:Name="UpdateNowButton" Content="Jetzt aktualisieren" Style="{StaticResource AccentButton}" Click="UpdateNow_Click" Margin="12,0,6,0"/>
<Button Content="Später" Style="{StaticResource SubtleButton}" Click="UpdateLater_Click" Margin="0,0,2,0"/>
<Button Content="Überspringen" Style="{StaticResource SubtleButton}" Click="UpdateSkip_Click"
ToolTip="Diese Version nicht mehr anzeigen"/>
</StackPanel>
<TextBlock x:Name="UpdateText" VerticalAlignment="Center" TextWrapping="Wrap"/>
</DockPanel>
</Border>
<!-- Hinweis (InfoBar) -->
<Border x:Name="InfoBar" DockPanel.Dock="Top" Margin="36,20,36,8" Padding="16,12" CornerRadius="6"
Background="{DynamicResource AccentSubtleBrush}" BorderBrush="{DynamicResource AccentSubtleStrokeBrush}" BorderThickness="1">
<DockPanel>
<TextBlock DockPanel.Dock="Left" Text="&#xE946;" FontFamily="{DynamicResource IconFont}" FontSize="18"
Foreground="{DynamicResource AccentBrush}" VerticalAlignment="Top" Margin="0,1,14,0"/>
<TextBlock TextWrapping="Wrap" LineHeight="20">
<Run FontWeight="SemiBold" Text="So räumst du auf:"/>
<Run Text="Ziehe Icons auf eine Kategorie links – sie werden dort gesichert. Icons mit"/>
<Run Foreground="{DynamicResource SuccessBrush}" FontWeight="SemiBold" Text="✓"/>
<Run Text="sind gesichert und können vom Desktop gelöscht werden (Rechtsklick → Vom Desktop löschen)."/>
</TextBlock>
</DockPanel>
</Border>
<!-- Spaltenköpfe der Listenansicht -->
<Grid x:Name="ListHeader" DockPanel.Dock="Top" Margin="42,10,48,4" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="160"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Name" FontSize="12" Foreground="{DynamicResource TextSecondaryBrush}" Margin="38,0,0,0"/>
<TextBlock Grid.Column="1" Text="Ort" FontSize="12" Foreground="{DynamicResource TextSecondaryBrush}"/>
<TextBlock Grid.Column="2" Text="Typ" FontSize="12" Foreground="{DynamicResource TextSecondaryBrush}"/>
</Grid>
<!-- Kacheln / Liste -->
<Grid>
<ListBox x:Name="IconList" Padding="28,4,28,24" SelectionMode="Extended"
ItemContainerStyle="{StaticResource TileItem}" ItemTemplate="{StaticResource TileTemplate}"
ItemsPanel="{StaticResource WrapPanelTemplate}"
AllowDrop="True" Drop="IconList_Drop" DragOver="IconList_DragOver"
PreviewMouseLeftButtonDown="IconList_PreviewMouseLeftButtonDown" PreviewMouseMove="IconList_PreviewMouseMove"
MouseDoubleClick="IconList_MouseDoubleClick" KeyDown="IconList_KeyDown"
ContextMenuOpening="IconList_ContextMenuOpening">
<ListBox.ContextMenu>
<ContextMenu x:Name="IconMenu"/>
</ListBox.ContextMenu>
</ListBox>
<!-- Leerer Zustand -->
<StackPanel x:Name="EmptyState" HorizontalAlignment="Center" VerticalAlignment="Center" IsHitTestVisible="False"
Margin="0,0,0,60" MaxWidth="360">
<TextBlock x:Name="EmptyGlyph" FontFamily="{DynamicResource IconFont}" FontSize="48" HorizontalAlignment="Center"
Foreground="{DynamicResource TextTertiaryBrush}"/>
<TextBlock x:Name="EmptyTitle" FontSize="18" FontWeight="SemiBold" HorizontalAlignment="Center" Margin="0,18,0,6"
FontFamily="{DynamicResource DisplayFont}"/>
<TextBlock x:Name="EmptyText" TextAlignment="Center" TextWrapping="Wrap" LineHeight="20"
Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</Grid>
</DockPanel>
<!-- ===== Einstellungen ===== -->
<ScrollViewer x:Name="SettingsView" Visibility="Collapsed" VerticalScrollBarVisibility="Auto">
<StackPanel Margin="36,26,36,36" MaxWidth="860" HorizontalAlignment="Stretch">
<TextBlock Text="Einstellungen" FontFamily="{DynamicResource DisplayFont}" FontSize="28" FontWeight="SemiBold"/>
<TextBlock Text="Darstellung" Style="{StaticResource SectionTitle}"/>
<Border Style="{StaticResource Card}">
<DockPanel>
<Border DockPanel.Dock="Right" Style="{StaticResource SegmentGroup}" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<RadioButton x:Name="DesignLight" Style="{StaticResource SegmentRadio}" GroupName="Design" Content="Hell" Checked="Design_Checked"/>
<RadioButton x:Name="DesignDark" Style="{StaticResource SegmentRadio}" GroupName="Design" Content="Dunkel" Checked="Design_Checked"/>
<RadioButton x:Name="DesignSystem" Style="{StaticResource SegmentRadio}" GroupName="Design" Content="Wie Windows" Checked="Design_Checked"/>
</StackPanel>
</Border>
<TextBlock DockPanel.Dock="Left" Text="&#xE706;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Design"/>
<TextBlock Text="Helles oder dunkles Erscheinungsbild" FontSize="12" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<Border DockPanel.Dock="Right" Style="{StaticResource SegmentGroup}" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<RadioButton x:Name="ViewSmall" Style="{StaticResource SegmentRadio}" GroupName="View" Content="Klein" Checked="View_Checked"/>
<RadioButton x:Name="ViewMedium" Style="{StaticResource SegmentRadio}" GroupName="View" Content="Mittel" Checked="View_Checked"/>
<RadioButton x:Name="ViewLarge" Style="{StaticResource SegmentRadio}" GroupName="View" Content="Groß" Checked="View_Checked"/>
<RadioButton x:Name="ViewList" Style="{StaticResource SegmentRadio}" GroupName="View" Content="Liste" Checked="View_Checked"/>
</StackPanel>
</Border>
<TextBlock DockPanel.Dock="Left" Text="&#xE80A;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Ansicht"/>
<TextBlock Text="Größe der Kacheln oder Listenansicht" FontSize="12" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<TextBlock Text="Start &amp; Erreichbarkeit" Style="{StaticResource SectionTitle}"/>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="AutostartToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="AutostartToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE7E8;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Mit Windows starten"/>
<TextBlock Text="Startet unauffällig im Infobereich – Desktop-Boxen und Auto-Sortierung sind dann sofort aktiv" FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="TrayToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="TrayToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE8A1;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Symbol im Infobereich"/>
<TextBlock Text="Unten rechts neben der Uhr – Klick öffnet die App, Rechtsklick zeigt deine Kategorien" FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="CloseToTrayToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="CloseToTrayToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE8BB;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Beim Schließen weiterlaufen"/>
<TextBlock Text="Das X versteckt das Fenster nur – beenden über Rechtsklick auf das Infobereich-Symbol" FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal" VerticalAlignment="Center">
<TextBox x:Name="HotkeyBox" Width="200" IsReadOnly="True" Margin="0,0,16,0" IsReadOnlyCaretVisible="False"
PreviewKeyDown="HotkeyBox_PreviewKeyDown" ToolTip="Hier klicken und neue Tastenkombination drücken"/>
<CheckBox x:Name="HotkeyToggle" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="HotkeyToggle_Click"/>
</StackPanel>
<TextBlock DockPanel.Dock="Left" Text="&#xE765;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Tastenkürzel"/>
<TextBlock x:Name="HotkeyHint" Text="Öffnet die App von überall – ins Feld klicken und neue Kombination drücken" FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<TextBlock Text="Automatisch sortieren" Style="{StaticResource SectionTitle}"/>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="AutoSortToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="AutoSortToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE9E9;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Neue Desktop-Icons automatisch einsortieren"/>
<TextBlock Text="Sobald z. B. ein Installer eine Verknüpfung auf den Desktop legt, wird sie nach deinen Regeln gesichert" FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="AutoRemoveToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="AutoRemoveToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE74D;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Danach vom Desktop entfernen"/>
<TextBlock Text="Das Original verschwindet vom Desktop (rückgängig machbar mit Strg+Z)" FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="DeadShortcutsToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="DeadShortcutsToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE7BA;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Deinstallierte Programme entfernen"/>
<TextBlock Text="Wird ein Programm deinstalliert, verschwindet seine Verknüpfung auch aus den Kategorien (rückgängig machbar mit Strg+Z). Programme auf abgesteckten USB- oder Netzlaufwerken bleiben erhalten." FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<StackPanel>
<TextBlock Text="Regeln" Margin="0,0,0,4"/>
<TextBlock Text="Die erste passende Regel gewinnt. Groß-/Kleinschreibung ist egal. Bei „Dateityp ist“ gehen Gruppen wie Bilder, Videos, Musik, Dokumente, Archive, Programme, Ordner – oder Endungen wie „pdf, docx“." TextWrapping="Wrap" FontSize="12"
Foreground="{DynamicResource TextSecondaryBrush}" Margin="0,0,0,14"/>
<ItemsControl x:Name="RulesList" ItemTemplate="{StaticResource RuleTemplate}"/>
<TextBlock x:Name="NoRulesText" Text="Noch keine Regeln." FontSize="12" Foreground="{DynamicResource TextTertiaryBrush}" Margin="0,0,0,12"/>
<StackPanel Orientation="Horizontal" Margin="0,4,0,0">
<Button Click="AddRule_Click" Margin="0,0,8,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE710;" FontFamily="{DynamicResource IconFont}" FontSize="12" Margin="0,0,8,0" VerticalAlignment="Center"/>
<TextBlock Text="Regel hinzufügen"/>
</StackPanel>
</Button>
<Button Click="ApplyRulesNow_Click" Content="Jetzt auf den Desktop anwenden"/>
</StackPanel>
</StackPanel>
</Border>
<TextBlock Text="Schnellstart-Suche" Style="{StaticResource SectionTitle}"/>
<Border Style="{StaticResource Card}">
<StackPanel>
<DockPanel>
<CheckBox x:Name="QuickSearchToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="QuickSearchToggle_Click"/>
<TextBox x:Name="QuickSearchHotkeyBox" DockPanel.Dock="Right" Width="200" IsReadOnly="True" Margin="0,0,16,0" IsReadOnlyCaretVisible="False"
VerticalAlignment="Center" PreviewKeyDown="QuickSearchHotkeyBox_PreviewKeyDown" ToolTip="Hier klicken und neue Tastenkombination drücken"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE721;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center" Margin="0,0,16,0">
<TextBlock Text="Programme blitzschnell starten"/>
<TextBlock x:Name="QuickSearchHint" FontSize="12" TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
<CheckBox x:Name="QuickSearchStartMenuBox" Content="Auch Programme aus dem Windows-Startmenü finden" Margin="34,12,0,0" Click="QuickSearchStartMenu_Click"/>
</StackPanel>
</Border>
<TextBlock Text="Desktop-Boxen" Style="{StaticResource SectionTitle}"/>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="FencesToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="FencesToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE8A1;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Boxen auf dem Desktop anzeigen"/>
<TextBlock Text="Kategorien als verschiebbare Kästen direkt auf dem Desktop – mit Tabs, eigenem Aussehen und Sperre (über das ⋯ einer Box). Doppelklick auf den Titel klappt eine Box ein." FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<Button DockPanel.Dock="Right" Click="AddPortal_Click" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE710;" FontFamily="{DynamicResource IconFont}" FontSize="12" Margin="0,0,8,0" VerticalAlignment="Center"/>
<TextBlock Text="Ordner wählen …"/>
</StackPanel>
</Button>
<TextBlock DockPanel.Dock="Left" Text="&#xF12B;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center" Margin="0,0,16,0">
<TextBlock Text="Ordner-Portal"/>
<TextBlock Text="Eine Box, die live einen beliebigen Ordner zeigt – z. B. Downloads oder ein Projekt. Unterordner öffnen sich direkt in der Box." FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="DrawFencesToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="DrawFencesToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE7C4;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center" Margin="0,0,16,0">
<TextBlock Text="Box auf dem Desktop aufziehen"/>
<TextBlock Text="Mit gedrückter rechter Maustaste auf einer freien Desktop-Fläche einen Rahmen ziehen – danach Kategorie oder Ordner wählen. Ein normaler Rechtsklick öffnet weiterhin das gewohnte Windows-Menü." FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<StackPanel>
<DockPanel>
<Button DockPanel.Dock="Right" Click="AddPage_Click" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE710;" FontFamily="{DynamicResource IconFont}" FontSize="12" Margin="0,0,8,0" VerticalAlignment="Center"/>
<TextBlock Text="Seite hinzufügen"/>
</StackPanel>
</Button>
<TextBlock DockPanel.Dock="Left" Text="&#xE8A9;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center" Margin="0,0,16,0">
<TextBlock Text="Desktop-Seiten"/>
<TextBlock x:Name="PagesHint" FontSize="12" TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"
Text="Jede Seite hat ihre eigenen Boxen. Wechseln mit Win + Alt + ← / →, mit dem Mausrad über dem freien Desktop oder über das Symbol neben der Uhr. Über die Uhr bei einer Seite stellst du einen Zeitplan und ein eigenes Hintergrundbild ein."/>
</StackPanel>
</DockPanel>
<ItemsControl x:Name="PageList" Margin="34,10,0,0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel Margin="0,4,0,0">
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal">
<Button Content="Anzeigen" Click="ShowPage_Click" Tag="{Binding Index}" Margin="0,0,6,0"/>
<Button Style="{StaticResource SubtleButton}" Click="PageSchedule_Click" Tag="{Binding Index}" ToolTip="Zeitplan und Hintergrundbild">
<TextBlock Text="&#xE823;" FontFamily="{DynamicResource IconFont}" FontSize="14"/>
</Button>
<Button Style="{StaticResource SubtleButton}" Click="RenamePage_Click" Tag="{Binding Index}" ToolTip="Umbenennen">
<TextBlock Text="&#xE70F;" FontFamily="{DynamicResource IconFont}" FontSize="14"/>
</Button>
<Button Style="{StaticResource SubtleButton}" Click="DeletePage_Click" Tag="{Binding Index}" ToolTip="Seite löschen (Boxen wandern auf die Seite davor)">
<TextBlock Text="&#xE74D;" FontFamily="{DynamicResource IconFont}" FontSize="14"/>
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<Ellipse Width="8" Height="8" Margin="0,0,10,0" VerticalAlignment="Center" Fill="{Binding Dot}"/>
<TextBlock Text="{Binding Name}" VerticalAlignment="Center"/>
<TextBlock Text="{Binding Info}" FontSize="12" Foreground="{DynamicResource TextTertiaryBrush}" Margin="10,0,0,0" VerticalAlignment="Center"/>
</StackPanel>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<CheckBox x:Name="PageWheelBox" Content="Mit dem Mausrad über dem freien Desktop wechseln" Margin="34,12,0,0" Click="PageWheel_Click"/>
</StackPanel>
</Border>
<Border Style="{StaticResource Card}">
<StackPanel>
<DockPanel>
<TextBlock DockPanel.Dock="Left" Text="&#xE790;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Desktop-Icons tönen"/>
<TextBlock Text="Färbt alle Icons auf dem Desktop einheitlich ein – für einen ruhigen Look. Die Icons in den Boxen tönst du über „Aussehen“ der jeweiligen Box." FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
<WrapPanel x:Name="DesktopTintSwatches" Margin="34,12,0,0"/>
<DockPanel Margin="34,4,0,0">
<TextBlock DockPanel.Dock="Left" Text="Stärke" VerticalAlignment="Center" Width="60" Foreground="{DynamicResource TextSecondaryBrush}"/>
<Slider x:Name="DesktopTintStrength" Minimum="20" Maximum="90" TickFrequency="5" IsSnapToTickEnabled="True" MaxWidth="320"
HorizontalAlignment="Left" Width="320" ValueChanged="DesktopTintStrength_ValueChanged"/>
</DockPanel>
</StackPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="QuickHideToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="QuickHideToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE7B3;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center" Margin="0,0,16,0">
<TextBlock Text="Schnell verstecken"/>
<TextBlock Text="Doppelklick auf eine freie Stelle des Desktops blendet alle Desktop-Icons und Boxen aus – noch ein Doppelklick holt sie zurück." FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="PeekToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="PeekToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE8A7;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center" Margin="0,0,16,0">
<TextBlock Text="Peek – Boxen nach vorne holen"/>
<TextBlock x:Name="PeekHint" Text="Win + Umschalt + B holt alle Boxen vor die offenen Fenster. Nochmal drücken, Esc oder woanders hinklicken schickt sie zurück." FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<DockPanel>
<CheckBox x:Name="ChameleonToggle" DockPanel.Dock="Right" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="ChameleonToggle_Click"/>
<TextBlock DockPanel.Dock="Left" Text="&#xE890;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center" Margin="0,0,16,0">
<TextBlock Text="Chamäleon"/>
<TextBlock Text="Boxen werden fast unsichtbar und erscheinen erst, wenn du mit der Maus darüberfährst – für einen ruhigen Desktop." FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<StackPanel>
<DockPanel>
<Button DockPanel.Dock="Right" Click="SaveSnapshot_Click" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE722;" FontFamily="{DynamicResource IconFont}" FontSize="12" Margin="0,0,8,0" VerticalAlignment="Center"/>
<TextBlock Text="Aktuelle Anordnung speichern"/>
</StackPanel>
</Button>
<TextBlock DockPanel.Dock="Left" Text="&#xE81E;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center" Margin="0,0,16,0">
<TextBlock Text="Snapshots"/>
<TextBlock Text="Box-Anordnungen speichern und mit einem Klick wiederherstellen. Für jede Bildschirm-Anordnung (z. B. Laptop allein / mit Monitor) merkt sich DeskCore die Positionen außerdem automatisch." FontSize="12"
TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
<ItemsControl x:Name="SnapshotList" Margin="34,10,0,0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel Margin="0,4,0,0">
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal">
<Button Content="Wiederherstellen" Click="RestoreSnapshot_Click" Tag="{Binding}" Margin="0,0,6,0"/>
<Button Style="{StaticResource SubtleButton}" Click="DeleteSnapshot_Click" Tag="{Binding}" ToolTip="Snapshot löschen">
<TextBlock Text="&#xE74D;" FontFamily="{DynamicResource IconFont}" FontSize="14"/>
</Button>
</StackPanel>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Info}" FontSize="12" Foreground="{DynamicResource TextTertiaryBrush}"/>
</StackPanel>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Border>
<TextBlock Text="Sicherung" Style="{StaticResource SectionTitle}"/>
<Border Style="{StaticResource Card}">
<DockPanel>
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal" VerticalAlignment="Center">
<Button Click="Export_Click" Margin="0,0,8,0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE898;" FontFamily="{DynamicResource IconFont}" FontSize="14" Margin="0,0,8,0" VerticalAlignment="Center"/>
<TextBlock Text="Sichern…"/>
</StackPanel>
</Button>
<Button Click="Import_Click">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE896;" FontFamily="{DynamicResource IconFont}" FontSize="14" Margin="0,0,8,0" VerticalAlignment="Center"/>
<TextBlock Text="Wiederherstellen…"/>
</StackPanel>
</Button>
</StackPanel>
<TextBlock DockPanel.Dock="Left" Text="&#xE8C8;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Kategorien sichern &amp; wiederherstellen"/>
<TextBlock x:Name="BackupHint" FontSize="12" TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<TextBlock Text="Updates" Style="{StaticResource SectionTitle}"/>
<Border Style="{StaticResource Card}">
<DockPanel>
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal" VerticalAlignment="Center">
<Button x:Name="CheckUpdateButton" Content="Jetzt prüfen" Click="CheckUpdate_Click" Margin="0,0,16,0"/>
<CheckBox x:Name="AutoUpdateToggle" Style="{StaticResource ToggleSwitch}" VerticalAlignment="Center" Click="AutoUpdateToggle_Click"/>
</StackPanel>
<TextBlock DockPanel.Dock="Left" Text="&#xE896;" FontFamily="{DynamicResource IconFont}" FontSize="18" VerticalAlignment="Center" Margin="0,0,16,0"/>
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Automatisch nach Updates suchen"/>
<TextBlock x:Name="UpdateStatusText" FontSize="12" TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"
Text="Einmal täglich beim Start – du wirst gefragt, bevor etwas installiert wird"/>
</StackPanel>
</DockPanel>
</Border>
<TextBlock Text="Info" Style="{StaticResource SectionTitle}"/>
<Border Style="{StaticResource Card}">
<DockPanel>
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal" VerticalAlignment="Center">
<Button Content="Lizenz" Click="License_Click" Margin="0,0,8,0"/>
<Button Content="Speicherort öffnen" Click="OpenStorage_Click" Margin="0,0,8,0"/>
<Button Click="Quit_Click">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE7E8;" FontFamily="{DynamicResource IconFont}" FontSize="14" Margin="0,0,8,0" VerticalAlignment="Center"/>
<TextBlock Text="Beenden"/>
</StackPanel>
</Button>
</StackPanel>
<Image DockPanel.Dock="Left" Source="app.ico" Width="24" Height="24" Margin="0,0,16,0" VerticalAlignment="Center"/>
<StackPanel VerticalAlignment="Center">
<TextBlock x:Name="AboutTitle" Text="DeskCore"/>
<TextBlock x:Name="AboutCopyright" FontSize="12" Foreground="{DynamicResource TextSecondaryBrush}"/>
<TextBlock x:Name="StoragePathText" FontSize="12" TextWrapping="Wrap" Foreground="{DynamicResource TextSecondaryBrush}"/>
</StackPanel>
</DockPanel>
</Border>
<Border Style="{StaticResource Card}">
<StackPanel>
<TextBlock Text="Tastenkürzel in der App" Margin="0,0,0,8"/>
<TextBlock FontSize="12" Foreground="{DynamicResource TextSecondaryBrush}" LineHeight="20" TextWrapping="Wrap"
Text="Strg+F Suchen · Esc Suche leeren · Strg+A Alles markieren · Enter Öffnen · F2 Umbenennen · Entf Löschen · Strg+Z Rückgängig · Strg+N Neue Kategorie · Alt+↑/↓ Kategorie verschieben · F5 Aktualisieren · Strg+1…9 Kategorie wechseln"/>
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
<!-- Rückmeldung (Toast) -->
<Border x:Name="Toast" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0,0,0,24"
Padding="16,11" CornerRadius="8" Opacity="0" IsHitTestVisible="False"
Background="{DynamicResource FlyoutBrush}" BorderBrush="{DynamicResource FlyoutStrokeBrush}" BorderThickness="1"
Effect="{StaticResource FlyoutShadow}">
<Border.RenderTransform>
<TranslateTransform x:Name="ToastShift" Y="12"/>
</Border.RenderTransform>
<StackPanel Orientation="Horizontal">
<Border x:Name="ToastBadge" Width="20" Height="20" CornerRadius="10" Background="{DynamicResource SuccessBrush}" Margin="0,0,12,0">
<TextBlock x:Name="ToastGlyph" Text="&#xE73E;" FontFamily="{DynamicResource IconFont}" FontSize="10" Foreground="White"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<TextBlock x:Name="ToastText" VerticalAlignment="Center" MaxWidth="560" TextTrimming="CharacterEllipsis"/>
<Button x:Name="ToastUndo" Content="Rückgängig" Style="{StaticResource SubtleButton}" Margin="12,-4,-6,-4" Padding="10,4"
Foreground="{DynamicResource AccentBrush}" Click="Undo_Click" Visibility="Collapsed"/>
</StackPanel>
</Border>
</Grid>
</Border>
<!-- Abdunkeln bei offenem Dialog -->
<Border x:Name="DimOverlay" Grid.RowSpan="2" Grid.ColumnSpan="2" Background="{DynamicResource OverlayBrush}" Visibility="Collapsed"/>
<!-- Fortschritt bei langen Vorgängen (große Ordner, Sicherung, Update) -->
<Grid x:Name="ProgressOverlay" Grid.Row="1" Grid.ColumnSpan="2" Background="{DynamicResource OverlayBrush}" Visibility="Collapsed">
<Border Width="460" HorizontalAlignment="Center" VerticalAlignment="Center" Padding="24,22" CornerRadius="8"
Background="{DynamicResource LayerBrush}" BorderBrush="{DynamicResource FlyoutStrokeBrush}" BorderThickness="1"
Effect="{StaticResource DialogShadow}">
<StackPanel>
<TextBlock x:Name="ProgressTitle" FontFamily="{DynamicResource DisplayFont}" FontSize="20" FontWeight="SemiBold"/>
<TextBlock x:Name="ProgressDetail" Margin="0,8,0,0" Foreground="{DynamicResource TextSecondaryBrush}" TextTrimming="CharacterEllipsis"/>
<Border x:Name="ProgressTrack" Height="4" CornerRadius="2" Margin="0,18,0,0" Background="{DynamicResource SubtleSelectedBrush}">
<Border x:Name="ProgressFill" HorizontalAlignment="Left" Width="0" CornerRadius="2" Background="{DynamicResource AccentBrush}"/>
</Border>
<DockPanel Margin="0,12,0,0">
<Button x:Name="ProgressCancel" DockPanel.Dock="Right" Content="Abbrechen" Click="ProgressCancel_Click" Width="110"/>
<TextBlock x:Name="ProgressStats" VerticalAlignment="Center" FontSize="12" Foreground="{DynamicResource TextSecondaryBrush}"/>
</DockPanel>
</StackPanel>
</Border>
</Grid>
</Grid>
</Window>