change - 修改界面显示:配置深色、浅色主题切换

dev
WenJY 5 days ago
parent b09baf31e0
commit 5cd9ab1cfc

@ -7,7 +7,88 @@
<local:ViewLocator />
</Application.DataTemplates>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<!-- ===== Dark Theme ===== -->
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="PageBgBrush" Color="#0A0E14" />
<SolidColorBrush x:Key="CardBgBrush" Color="#0C1622" />
<SolidColorBrush x:Key="SurfaceBgBrush" Color="#0F1620" />
<SolidColorBrush x:Key="PrimaryBgBrush" Color="#0F1F38" />
<SolidColorBrush x:Key="AccentBgBrush" Color="#1B3A5C" />
<SolidColorBrush x:Key="BorderBrush" Color="#1A2F4A" />
<SolidColorBrush x:Key="PrimaryTextBrush" Color="#DDE4F0" />
<SolidColorBrush x:Key="TitleTextBrush" Color="#E1E8F0" />
<SolidColorBrush x:Key="SecondaryTextBrush" Color="#8B9BB5" />
<SolidColorBrush x:Key="MutedTextBrush" Color="#6B8CB5" />
<SolidColorBrush x:Key="SubtleTextBrush" Color="#4B6A8A" />
<SolidColorBrush x:Key="AccentTextBrush" Color="#4FC3F7" />
<SolidColorBrush x:Key="SuccessBrush" Color="#00E676" />
<SolidColorBrush x:Key="WarningBrush" Color="#FFB74D" />
<SolidColorBrush x:Key="ErrorBrush" Color="#FF5252" />
<SolidColorBrush x:Key="PrimaryBtnBrush" Color="#1565C0" />
<SolidColorBrush x:Key="InfoBtnBrush" Color="#0277BD" />
<SolidColorBrush x:Key="DangerBtnBrush" Color="#B71C1C" />
<SolidColorBrush x:Key="TealBtnBrush" Color="#0D7377" />
<SolidColorBrush x:Key="OverlayBgBrush" Color="#80000000" />
<SolidColorBrush x:Key="WhiteBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="SearchBoxBgBrush" Color="#0C1622" />
<SolidColorBrush x:Key="SelectionBgBrush" Color="#1A2F4A" />
<SolidColorBrush x:Key="SelectionFgBrush" Color="#DDE4F0" />
<SolidColorBrush x:Key="SystemControlHighlightListAccentLowBrush" Color="#1A2F4A" />
<SolidColorBrush x:Key="SystemControlHighlightListAccentHighBrush" Color="#1E3550" />
<SolidColorBrush x:Key="SystemControlHighlightListAccentMediumBrush" Color="#1E3550" />
<SolidColorBrush x:Key="SystemControlHighlightAltListAccentLowBrush" Color="#1A2F4A" />
<SolidColorBrush x:Key="SystemControlHighlightAccentBrush" Color="#1A2F4A" />
<Color x:Key="SystemAccentColor">#2E5A7A</Color>
<Color x:Key="SystemAccentColorDark1">#1E3A5A</Color>
<Color x:Key="SystemAccentColorLight1">#3E6A9A</Color>
</ResourceDictionary>
<!-- ===== Light Theme ===== -->
<ResourceDictionary x:Key="Light">
<SolidColorBrush x:Key="PageBgBrush" Color="#F0F2F5" />
<SolidColorBrush x:Key="CardBgBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="SurfaceBgBrush" Color="#FAFBFC" />
<SolidColorBrush x:Key="PrimaryBgBrush" Color="#E3F2FD" />
<SolidColorBrush x:Key="AccentBgBrush" Color="#BBDEFB" />
<SolidColorBrush x:Key="BorderBrush" Color="#D0D7DE" />
<SolidColorBrush x:Key="PrimaryTextBrush" Color="#1F2328" />
<SolidColorBrush x:Key="TitleTextBrush" Color="#0969DA" />
<SolidColorBrush x:Key="SecondaryTextBrush" Color="#656D76" />
<SolidColorBrush x:Key="MutedTextBrush" Color="#8B949E" />
<SolidColorBrush x:Key="SubtleTextBrush" Color="#AFB8C1" />
<SolidColorBrush x:Key="AccentTextBrush" Color="#0969DA" />
<SolidColorBrush x:Key="SuccessBrush" Color="#1A7F37" />
<SolidColorBrush x:Key="WarningBrush" Color="#BF8700" />
<SolidColorBrush x:Key="ErrorBrush" Color="#CF222E" />
<SolidColorBrush x:Key="PrimaryBtnBrush" Color="#0969DA" />
<SolidColorBrush x:Key="InfoBtnBrush" Color="#0969DA" />
<SolidColorBrush x:Key="DangerBtnBrush" Color="#CF222E" />
<SolidColorBrush x:Key="TealBtnBrush" Color="#00838F" />
<SolidColorBrush x:Key="OverlayBgBrush" Color="#60000000" />
<SolidColorBrush x:Key="WhiteBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="SearchBoxBgBrush" Color="#F0F2F5" />
<SolidColorBrush x:Key="SelectionBgBrush" Color="#D8DEE4" />
<SolidColorBrush x:Key="SelectionFgBrush" Color="#1F2328" />
<SolidColorBrush x:Key="SystemControlHighlightListAccentLowBrush" Color="#D8DEE4" />
<SolidColorBrush x:Key="SystemControlHighlightListAccentHighBrush" Color="#C8D0D8" />
<SolidColorBrush x:Key="SystemControlHighlightListAccentMediumBrush" Color="#C8D0D8" />
<SolidColorBrush x:Key="SystemControlHighlightAltListAccentLowBrush" Color="#D8DEE4" />
<SolidColorBrush x:Key="SystemControlHighlightAccentBrush" Color="#D8DEE4" />
<Color x:Key="SystemAccentColor">#8FA0B0</Color>
<Color x:Key="SystemAccentColorDark1">#6F8292</Color>
<Color x:Key="SystemAccentColorLight1">#AFBECC</Color>
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Application.Resources>
<Application.Styles>
<FluentTheme />
<Style Selector="ListBoxItem:selected">
<Setter Property="Foreground" Value="{DynamicResource SelectionFgBrush}" />
</Style>
</Application.Styles>
</Application>

@ -13,16 +13,16 @@
SystemDecorations="Full"
CanResize="False">
<Border Background="#0F1620" CornerRadius="10" Margin="0"
BorderBrush="#1B3A5C" BorderThickness="1">
<Border Background="{DynamicResource SurfaceBgBrush}" CornerRadius="10" Margin="0"
BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<Grid RowDefinitions="Auto,*,Auto" Margin="0">
<!-- Title Bar -->
<Border Grid.Row="0" Padding="20,14" CornerRadius="10,10,0,0"
Background="#0C1622" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="18" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock x:Name="TitleText" Text="编辑" FontSize="15" FontWeight="SemiBold" Foreground="#DDE4F0" />
<Rectangle Width="3" Height="18" Fill="{DynamicResource AccentTextBrush}" RadiusX="2" RadiusY="2" />
<TextBlock x:Name="TitleText" Text="编辑" FontSize="15" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
</Border>
@ -33,29 +33,17 @@
<!-- Buttons -->
<Border Grid.Row="2" Padding="20,12" CornerRadius="0,0,10,10"
Background="#0A1018" BorderBrush="#1A2F4A" BorderThickness="0,1,0,0">
Background="{DynamicResource PageBgBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,1,0,0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Spacing="10">
<Button x:Name="CancelBtn" Content="取 消"
FontSize="12" Padding="24,8"
Background="#0F1F38" Foreground="#8B9BB5"
BorderBrush="#1A2F4A" BorderThickness="1"
Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}"
BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1"
CornerRadius="4" />
<Button x:Name="SaveBtn" Content="保 存"
FontSize="12" Padding="24,8"
CornerRadius="4">
<Button.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#1976D2" Offset="0" />
<GradientStop Color="#1565C0" Offset="1" />
</LinearGradientBrush>
</Button.Background>
<Button.Foreground>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#FFFFFF" Offset="0" />
<GradientStop Color="#E0E0E0" Offset="1" />
</LinearGradientBrush>
</Button.Foreground>
</Button>
Background="{DynamicResource PrimaryBtnBrush}" Foreground="White"
CornerRadius="4" />
</StackPanel>
</Border>
</Grid>

@ -5,6 +5,7 @@ using Avalonia;
using Avalonia.Controls;
using Avalonia.Layout;
using Avalonia.Media;
using Avalonia.Styling;
using Sln.Wcs.UI.ViewModels.Base;
namespace Sln.Wcs.UI.Views.Base;
@ -31,12 +32,21 @@ public partial class EntityEditWindow : Window
return _tcs.Task;
}
private static bool IsDark =>
Application.Current!.ActualThemeVariant == ThemeVariant.Dark;
private void BuildForm(List<FieldConfig> fields)
{
FormPanel.Children.Clear();
if (_entity is null) return;
var type = _entity.GetType();
var labelFg = Brush.Parse(IsDark ? "#8B9BB5" : "#656D76");
var checkFg = Brush.Parse(IsDark ? "#BCC8D6" : "#1F2328");
var tbBg = Brush.Parse(IsDark ? "#0A0E14" : "#F0F2F5");
var tbFg = Brush.Parse(IsDark ? "#DDE4F0" : "#1F2328");
var tbBorder = Brush.Parse(IsDark ? "#1A2F4A" : "#D0D7DE");
foreach (var field in fields)
{
var prop = type.GetProperty(field.PropertyName);
@ -58,7 +68,7 @@ public partial class EntityEditWindow : Window
{
Text = field.DisplayName,
FontSize = 12,
Foreground = Brush.Parse("#7B8FA8"),
Foreground = labelFg,
VerticalAlignment = VerticalAlignment.Center,
};
row.Children.Add(label);
@ -71,7 +81,7 @@ public partial class EntityEditWindow : Window
{
IsChecked = value is int iv ? iv == 1 : (value as bool? ?? false),
IsEnabled = !field.IsReadOnly,
Foreground = Brush.Parse("#BCC8D6"),
Foreground = checkFg,
VerticalAlignment = VerticalAlignment.Center,
};
cb.IsCheckedChanged += (_, _) =>
@ -85,9 +95,9 @@ public partial class EntityEditWindow : Window
Text = value?.ToString() ?? "",
IsReadOnly = field.IsReadOnly,
Watermark = field.DisplayName,
Background = Brush.Parse("#0A0E14"),
Foreground = Brush.Parse("#DDE4F0"),
BorderBrush = Brush.Parse("#1A2F4A"),
Background = tbBg,
Foreground = tbFg,
BorderBrush = tbBorder,
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(3),
Padding = new Thickness(8, 5),

@ -3,45 +3,45 @@
x:Class="Sln.Wcs.UI.Views.Base.LocationInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索库位编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
<TextBox Grid.Column="0" Watermark="搜索库位编号/名称..." Text="{Binding SearchText}" Width="220" Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1*,0.8*,0.7*,0.7*,0.5*,0.5*,0.5*,0.8*,1*,0.7*,0.7*,0.8*">
<TextBlock Grid.Column="0" Text="库位编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="库位名称" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="区域" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="仓库" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="排" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="列" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="层" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="AGV定位" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="8" Text="物料编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="9" Text="状态" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="10" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="11" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="库位编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="库位名称" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="区域" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="仓库" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="排" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="列" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="层" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="AGV定位" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="8" Text="物料编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="9" Text="状态" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="10" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="11" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1">
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1*,0.8*,0.7*,0.7*,0.5*,0.5*,0.5*,0.8*,1*,0.7*,0.7*,0.8*">
<TextBlock Grid.Column="0" Text="{Binding locationCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding locationName}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding locationArea}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding storeCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding locationRows}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding locationColumns}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding locationLayers}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding agvPosition}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="8" Text="{Binding materialCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="9" Text="{Binding locationStatus}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="10" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding locationCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding locationName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding locationArea}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding storeCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding locationRows}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding locationColumns}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding locationLayers}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding agvPosition}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="8" Text="{Binding materialCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="9" Text="{Binding locationStatus}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="10" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="11" Orientation="Horizontal" Spacing="6">
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
</StackPanel>
</Grid>
</Border>

@ -3,37 +3,37 @@
x:Class="Sln.Wcs.UI.Views.Base.MaterialInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索物料编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
<TextBox Grid.Column="0" Watermark="搜索物料编号/名称..." Text="{Binding SearchText}" Width="220" Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1.3*,0.9*,1.2*,1*,1*,0.8*,0.8*">
<TextBlock Grid.Column="0" Text="物料编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="物料名称" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="物料条码" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="最短存放" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="最长存放" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="物料编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="物料名称" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="物料条码" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="最短存放" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="最长存放" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1">
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1.2*,1.3*,0.9*,1.2*,1*,1*,0.8*,0.8*">
<TextBlock Grid.Column="0" Text="{Binding materialCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding materialName}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding materialType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding materialBarcode}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding minStorageCycle}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding maxStorageCycle}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding materialCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding materialName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding materialType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding materialBarcode}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding minStorageCycle}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding maxStorageCycle}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="7" Orientation="Horizontal" Spacing="6">
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
</StackPanel>
</Grid>
</Border>

@ -3,31 +3,31 @@
x:Class="Sln.Wcs.UI.Views.Base.StoreInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索仓库编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
<TextBox Grid.Column="0" Watermark="搜索仓库编号/名称..." Text="{Binding SearchText}" Width="220" Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1.5*,1*,1*,1*">
<TextBlock Grid.Column="0" Text="仓库编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="仓库名称" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="仓库类型" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="仓库编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="仓库名称" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="仓库类型" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1">
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1.2*,1.5*,1*,1*,1*">
<TextBlock Grid.Column="0" Text="{Binding storeCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding storeName}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding storeType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding storeCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding storeName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding storeType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="4" Orientation="Horizontal" Spacing="6">
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
</StackPanel>
</Grid>
</Border>

@ -4,41 +4,41 @@
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索主机编号/名称..." Text="{Binding SearchText}" Width="220"
Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1.5*,1.5*,0.8*,1.2*,0.8*,1.2*,1*,1.2*">
<TextBlock Grid.Column="0" Text="主机编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="主机名称" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="主机IP" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="端口" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="路径" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="主机编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="主机名称" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="主机IP" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="端口" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="路径" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1"
Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1.5*,1.5*,0.8*,1.2*,0.8*,1.2*,1*,1.2*">
<TextBlock Grid.Column="0" Text="{Binding hostCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding hostName}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding hostType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding hostIP}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding hostPort}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding hostPath}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding hostCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding hostName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding hostType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding hostIP}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding hostPort}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding hostPath}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="7" Orientation="Horizontal" Spacing="6">
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click"
Background="#0277BD" Foreground="White" FontSize="11" Padding="8,3" />
Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click"
Background="#B71C1C" Foreground="White" FontSize="11" Padding="8,3" />
Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
</StackPanel>
</Grid>
</Border>

@ -3,40 +3,45 @@
x:Class="Sln.Wcs.UI.Views.Device.DeviceInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch" ClipToBounds="True">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索设备编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
<TextBox Grid.Column="0" Watermark="搜索设备编号/名称..." Text="{Binding SearchText}" Width="220"
Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}"
Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}"
Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1.1*,1.1*,0.7*,0.6*,0.6*,0.9*,0.6*,0.6*,1*">
<TextBlock Grid.Column="0" Text="设备编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="设备名称" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="别名" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="状态" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="主机编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="序号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="8" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="设备编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="设备名称" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="别名" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="状态" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="主机编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="序号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="8" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1">
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}"
BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1.1*,1.1*,0.7*,0.6*,0.6*,0.9*,0.6*,0.6*,1*">
<TextBlock Grid.Column="0" Text="{Binding deviceCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding deviceName}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding deviceAlias}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding deviceType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding deviceStatus}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding hostCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding deviceSerialNo}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding deviceCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding deviceName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding deviceAlias}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding deviceType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding deviceStatus}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding hostCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding deviceSerialNo}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="8" Orientation="Horizontal" Spacing="4">
<Button Content="参数" Tag="{Binding}" Click="Params_Click" Background="#0D7377" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="参数" Tag="{Binding}" Click="Params_Click" Background="{DynamicResource TealBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
</StackPanel>
</Grid>
</Border>
@ -44,59 +49,53 @@
</ListBox.ItemTemplate>
</ListBox>
<!-- Slide-out overlay panel (half-screen) -->
<!-- Slide-out overlay panel -->
<Panel Grid.Row="0" Grid.RowSpan="3" IsVisible="{Binding IsPanelOpen}" ZIndex="10">
<Grid ColumnDefinitions="0.6*,1.4*">
<!-- Left portion: backdrop that closes on tap -->
<Border Grid.Column="0" x:Name="Backdrop" Background="#80000000" Opacity="0" PointerPressed="Backdrop_Pressed" />
<!-- Right half: slide panel -->
<Border Grid.Column="0" x:Name="Backdrop" Background="{DynamicResource OverlayBgBrush}" Opacity="0" PointerPressed="Backdrop_Pressed" />
<Border Grid.Column="1" x:Name="SlideContent"
Background="#0C1622"
BorderBrush="#1A2F4A"
Background="{DynamicResource CardBgBrush}"
BorderBrush="{DynamicResource BorderBrush}"
BorderThickness="1,0,0,0">
<Border.RenderTransform>
<TranslateTransform X="3000" />
</Border.RenderTransform>
<Grid RowDefinitions="Auto,*">
<!-- Panel header -->
<Border Grid.Row="0" Background="#0F1F38" Padding="14,10" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Grid.Row="0" Background="{DynamicResource PrimaryBgBrush}" Padding="14,10" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="*,Auto,Auto">
<TextBlock Grid.Column="0" Text="{Binding SlidePanelTitle}" FontSize="14" FontWeight="SemiBold" Foreground="#DDE4F0" VerticalAlignment="Center" />
<Button Grid.Column="1" Content="新增" Command="{Binding AddParamCommand}" Background="#1565C0" Foreground="White" FontSize="12" Padding="12,5" Margin="0,0,10,0" />
<Button Grid.Column="2" Content="✕" Click="ClosePanel_Click" Background="Transparent" Foreground="#8B9BB5" FontSize="14" Padding="6,2" />
<TextBlock Grid.Column="0" Text="{Binding SlidePanelTitle}" FontSize="14" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" VerticalAlignment="Center" />
<Button Grid.Column="1" Content="新增" Command="{Binding AddParamCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" FontSize="12" Padding="12,5" Margin="0,0,10,0" />
<Button Grid.Column="2" Content="✕" Click="ClosePanel_Click" Background="Transparent" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="14" Padding="6,2" />
</Grid>
</Border>
<!-- Params list -->
<Grid Grid.Row="1" RowDefinitions="Auto,*">
<!-- Column header -->
<Border Grid.Row="0" Background="#0C1622" Padding="10,6" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Grid.Row="0" Background="{DynamicResource CardBgBrush}" Padding="10,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="0.6*,1.5*,1.2*,0.8*,0.5*,0.7*,0.6*,1*">
<TextBlock Grid.Column="0" Text="参数编号" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="参数名称" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="参数地址" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="参数类型" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="值" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="操作类型" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="启用" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="操作" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="参数编号" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="参数名称" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="参数地址" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="参数类型" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="值" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="操作类型" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="启用" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="操作" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<!-- Param item list -->
<ListBox Grid.Row="1" ItemsSource="{Binding DeviceParams}" Background="Transparent" Foreground="#DDE4F0" BorderThickness="0">
<ListBox Grid.Row="1" ItemsSource="{Binding DeviceParams}" Background="Transparent" Foreground="{DynamicResource PrimaryTextBrush}" BorderThickness="0">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="10,5" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="10,5" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="0.6*,1.5*,1.2*,0.8*,0.5*,0.7*,0.6*,1*">
<TextBlock Grid.Column="0" Text="{Binding paramCode}" Foreground="#DDE4F0" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding paramName}" Foreground="#DDE4F0" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding paramAddress}" Foreground="#8B9BB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding paramType}" Foreground="#8B9BB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding paramValue}" Foreground="#6B8CB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding operationType}" Foreground="#8B9BB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding isFlag}" Foreground="#8B9BB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding paramCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding paramName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding paramAddress}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding paramType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding paramValue}" Foreground="{DynamicResource MutedTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding operationType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding isFlag}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<StackPanel Grid.Column="7" Orientation="Horizontal" Spacing="4">
<Button Content="编辑" Tag="{Binding}" Click="ParamEdit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="ParamDelete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="编辑" Tag="{Binding}" Click="ParamEdit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="ParamDelete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
</StackPanel>
</Grid>
</Border>

@ -3,41 +3,41 @@
x:Class="Sln.Wcs.UI.Views.Device.DeviceParamListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索参数编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
<TextBox Grid.Column="0" Watermark="搜索参数编号/名称..." Text="{Binding SearchText}" Width="220" Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1*,1*,1.2*,1*,0.7*,0.6*,0.7*,0.7*,0.7*,0.8*">
<TextBlock Grid.Column="0" Text="参数编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="设备编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="参数名称" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="参数地址" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="值" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="频率" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="8" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="9" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="参数编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="设备编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="参数名称" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="参数地址" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="值" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="频率" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="8" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="9" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1">
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1*,1*,1.2*,1*,0.7*,0.6*,0.7*,0.7*,0.7*,0.8*">
<TextBlock Grid.Column="0" Text="{Binding paramCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding deviceCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding paramName}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding paramAddress}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding paramType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding paramValue}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding operationType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding operationFrequency}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="8" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding paramCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding deviceCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding paramName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding paramAddress}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding paramType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding paramValue}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding operationType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding operationFrequency}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="8" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="9" Orientation="Horizontal" Spacing="6">
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
</StackPanel>
</Grid>
</Border>

@ -5,198 +5,168 @@
<StackPanel Spacing="14">
<!-- Intro Card -->
<Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="10">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="WCS 通用平台框架" FontSize="17" FontWeight="SemiBold" Foreground="#DDE4F0" />
<TextBlock Text="WCS 通用平台框架" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<TextBlock Text="基于 .NET 8.0 + Avalonia UI 构建的跨平台仓库控制系统 (Warehouse Control System),支持多种硬件设备协议,提供统一的调度、监控和管理能力。采用 Apollo 配置中心实时下发配置Serilog 结构化日志按模块分类存储SqlSugar ORM 多库访问。"
FontSize="12" Foreground="#7B8FA8" TextWrapping="Wrap" LineHeight="20" />
FontSize="12" Foreground="{DynamicResource SecondaryTextBrush}" TextWrapping="Wrap" LineHeight="20" />
<WrapPanel Margin="0,4,0,0">
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text=".NET 8.0" FontSize="11" Foreground="#64B5F6" /></Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="Avalonia UI" FontSize="11" Foreground="#64B5F6" /></Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="MVVM" FontSize="11" Foreground="#64B5F6" /></Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="SqlSugar ORM" FontSize="11" Foreground="#64B5F6" /></Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="Serilog" FontSize="11" Foreground="#64B5F6" /></Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="Apollo 配置中心" FontSize="11" Foreground="#64B5F6" /></Border>
<Border Background="#0F1F38" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="#1B3A5C" BorderThickness="1">
<TextBlock Text="FusionCache" FontSize="11" Foreground="#64B5F6" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text=".NET 8.0" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="Avalonia UI" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="MVVM" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="SqlSugar ORM" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="Serilog" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="Apollo 配置中心" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="FusionCache" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
</WrapPanel>
</StackPanel>
</Border>
<!-- Module Card -->
<Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="核心模块" FontSize="17" FontWeight="SemiBold" Foreground="#DDE4F0" />
<TextBlock Text="核心模块" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<WrapPanel>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="主控台程序负责系统启动、配置加载、DI 容器编排" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<TextBlock Text="Sln.Wcs" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="主控台程序负责系统启动、配置加载、DI 容器编排" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.UI" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="跨平台桌面客户端,基于 Avalonia + MVVM提供设备监控界面" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<TextBlock Text="Sln.Wcs.UI" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="跨平台桌面客户端,基于 Avalonia + MVVM提供设备监控界面" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Business" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="业务逻辑层,任务创建、库位筛选、物料入库/出库策略" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<TextBlock Text="Sln.Wcs.Business" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="业务逻辑层,任务创建、库位筛选、物料入库/出库策略" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Repository" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="数据访问层,基于 SqlSugar ORM多数据库连接管理" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<TextBlock Text="Sln.Wcs.Repository" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="数据访问层,基于 SqlSugar ORM多数据库连接管理" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Strategy" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="策略层,物料/库位分配算法,支持多种策略可配置切换" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<TextBlock Text="Sln.Wcs.Strategy" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="策略层,物料/库位分配算法,支持多种策略可配置切换" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Cache" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="缓存层FusionCache + SQLite 分布式缓存,支持熔断" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<TextBlock Text="Sln.Wcs.Cache" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="缓存层FusionCache + SQLite 分布式缓存,支持熔断" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Serilog" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="日志模块,按 Info/Plc/Agv/Rfid/Alarm/Error 分类存储" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<TextBlock Text="Sln.Wcs.Serilog" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="日志模块,按 Info/Plc/Agv/Rfid/Alarm/Error 分类存储" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Common / Model" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" />
<TextBlock Text="公共工具层与领域模型,提供基础类型、实体定义与配置" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" /></StackPanel></Border>
<TextBlock Text="Sln.Wcs.Common / Model" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="公共工具层与领域模型,提供基础类型、实体定义与配置" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
</WrapPanel>
</StackPanel>
</Border>
<!-- 海康 AGV 模块 -->
<Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="海康 AGV 调度模块" FontSize="17" FontWeight="SemiBold" Foreground="#DDE4F0" />
<TextBlock Text="海康 AGV 调度模块" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<TextBlock Text="封装海康机器人 RCS-2000 接口,采用三层架构实现 AGV 任务下发、路径规划、状态查询与设备通知。"
FontSize="12" Foreground="#7B8FA8" TextWrapping="Wrap" />
FontSize="12" Foreground="{DynamicResource SecondaryTextBrush}" TextWrapping="Wrap" />
<WrapPanel>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#1565C0" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotSdk" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
<TextBlock Text="底层 HTTP 客户端,封装海康 RCS API 原始接口调用GbTaskSubmit / GenSchedulingTask / QueryStatus / CarrierBind 等)" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Background="{DynamicResource PrimaryBtnBrush}" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotSdk" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="底层 HTTP 客户端,封装海康 RCS API 原始接口调用GbTaskSubmit / GenSchedulingTask / QueryStatus / CarrierBind 等)" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#0277BD" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotAdapter" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
<TextBlock Text="适配层,将 SDK 原始 DTO 转换为业务语义模型,含 TaskType 映射、状态枚举转换、异常处理与重试" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Background="{DynamicResource InfoBtnBrush}" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotAdapter" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="适配层,将 SDK 原始 DTO 转换为业务语义模型,含 TaskType 映射、状态枚举转换、异常处理与重试" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#00838F" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
<TextBlock Text="调度中枢,管理多 AGV 的任务队列、防死锁、路径冲突检测、优先级调度与设备状态同步" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<TextBlock Text="HikRoBotDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="调度中枢,管理多 AGV 的任务队列、防死锁、路径冲突检测、优先级调度与设备状态同步" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
</WrapPanel>
</StackPanel>
</Border>
<!-- 提升机模块 -->
<Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="提升机调度模块" FontSize="17" FontWeight="SemiBold" Foreground="#DDE4F0" />
<TextBlock Text="提升机调度模块" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<TextBlock Text="封装提升机 (Hoist) 控制协议,实现出入库升降控制、托盘到位检测、报警设置与状态实时监控。"
FontSize="12" Foreground="#7B8FA8" TextWrapping="Wrap" />
FontSize="12" Foreground="{DynamicResource SecondaryTextBrush}" TextWrapping="Wrap" />
<WrapPanel>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#1565C0" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistSdk" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
<TextBlock Text="底层通信客户端,封装提升机原生协议(升降/取货/放货/状态查询),处理网络连接与超时" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Background="{DynamicResource PrimaryBtnBrush}" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistSdk" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="底层通信客户端,封装提升机原生协议(升降/取货/放货/状态查询),处理网络连接与超时" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#0277BD" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistAdapter" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
<TextBlock Text="适配层,将原始协议 DTO 转换为业务领域模型,含楼层映射、托盘状态枚举、报警码解析" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Background="{DynamicResource InfoBtnBrush}" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistAdapter" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="适配层,将原始协议 DTO 转换为业务领域模型,含楼层映射、托盘状态枚举、报警码解析" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#00838F" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="#E1E8F0" /></StackPanel>
<TextBlock Text="调度中枢,管理多台提升机的任务队列、楼层协同、托盘到位逻辑、报警联动与状态同步" FontSize="11" Foreground="#6B8CB5" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<TextBlock Text="HoistDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="调度中枢,管理多台提升机的任务队列、楼层协同、托盘到位逻辑、报警联动与状态同步" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
</WrapPanel>
</StackPanel>
</Border>
<!-- 调用关系 -->
<Border CornerRadius="8" Padding="22" BorderBrush="#1E3550" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0%,0%" EndPoint="0%,100%">
<GradientStop Color="#121C29" Offset="0" />
<GradientStop Color="#0F1620" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="14">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="调用关系" FontSize="17" FontWeight="SemiBold" Foreground="#DDE4F0" />
<TextBlock Text="调用关系" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<Border Background="#0C1622" CornerRadius="6" Padding="16,12" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Background="{DynamicResource CardBgBrush}" CornerRadius="6" Padding="16,12" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="8">
<TextBlock Text="Strategy → Dispatcher → Adapter → SDK → 设备"
FontSize="13" FontWeight="SemiBold" Foreground="#64B5F6" HorizontalAlignment="Center" />
FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource AccentTextBrush}" HorizontalAlignment="Center" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="0">
<Border Background="#6A1B9A" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="Strategy" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="物料/库位分配" FontSize="9" Foreground="#CE93D8" HorizontalAlignment="Center" /></StackPanel></Border>
<TextBlock Text="→" FontSize="18" Foreground="#4FC3F7" VerticalAlignment="Center" Margin="8,0" />
<TextBlock Text="→" FontSize="18" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" Margin="8,0" />
<Border Background="#00838F" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="Dispatcher" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="队列调度/防死锁" FontSize="9" Foreground="#B2DFDB" HorizontalAlignment="Center" /></StackPanel></Border>
<TextBlock Text="→" FontSize="18" Foreground="#4FC3F7" VerticalAlignment="Center" Margin="8,0" />
<Border Background="#0277BD" CornerRadius="4" Padding="14,10" Width="140">
<TextBlock Text="→" FontSize="18" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" Margin="8,0" />
<Border Background="{DynamicResource InfoBtnBrush}" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="Adapter" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="DTO转换/重试" FontSize="9" Foreground="#B3D4FC" HorizontalAlignment="Center" /></StackPanel></Border>
<TextBlock Text="→" FontSize="18" Foreground="#4FC3F7" VerticalAlignment="Center" Margin="8,0" />
<TextBlock Text="→" FontSize="18" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" Margin="8,0" />
<Border Background="#0D47A1" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="SDK" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
@ -207,19 +177,19 @@
<WrapPanel HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#6A1B9A" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Strategy 策略层" FontSize="11" Foreground="#8B9BB5" /></StackPanel>
<TextBlock Text="Strategy 策略层" FontSize="11" Foreground="{DynamicResource SecondaryTextBrush}" /></StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#00838F" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Dispatcher 调度层" FontSize="11" Foreground="#8B9BB5" /></StackPanel>
<TextBlock Text="Dispatcher 调度层" FontSize="11" Foreground="{DynamicResource SecondaryTextBrush}" /></StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#0277BD" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Adapter 适配层" FontSize="11" Foreground="#8B9BB5" /></StackPanel>
<Border Background="{DynamicResource InfoBtnBrush}" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Adapter 适配层" FontSize="11" Foreground="{DynamicResource SecondaryTextBrush}" /></StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#0D47A1" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="SDK 通信层" FontSize="11" Foreground="#8B9BB5" /></StackPanel>
<TextBlock Text="SDK 通信层" FontSize="11" Foreground="{DynamicResource SecondaryTextBrush}" /></StackPanel>
</WrapPanel>
<TextBlock Text="Strategy 策略层根据物料属性与库位状态计算最优分配方案,将任务指令交由 Dispatcher 进行队列调度与冲突检测Dispatcher 通过 Adapter 将业务指令转换为设备协议格式,最终由 SDK 与硬件设备AGV RCS-2000 / 提升机 PLC通信执行。海康 AGV 与提升机均遵循此四层调用链仅底层通信协议不同HTTP vs TCP。"
FontSize="11" Foreground="#5B6F8A" TextWrapping="Wrap" LineHeight="18" />
FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="18" />
</StackPanel>
</Border>

@ -7,60 +7,69 @@
Width="1280" Height="780"
MinWidth="1000" MinHeight="600"
WindowStartupLocation="CenterScreen"
Background="#0A0E14"
Foreground="#BCC8D6">
Background="{DynamicResource PageBgBrush}"
Foreground="{DynamicResource PrimaryTextBrush}">
<Grid RowDefinitions="Auto,Auto,*,Auto">
<!-- Title Bar -->
<Border Grid.Row="0" Padding="16,8" Background="#0A0E14" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Grid.Row="0" Padding="16,8" Background="{DynamicResource PageBgBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="Auto,*,Auto">
<!-- Left: Logo + Title -->
<StackPanel Grid.Column="0" Orientation="Horizontal" Spacing="10" VerticalAlignment="Center">
<Canvas Width="22" Height="22">
<Rectangle Canvas.Left="1" Canvas.Top="1" Width="20" Height="16" RadiusX="2" RadiusY="2" Fill="#0F1F38" Stroke="#4FC3F7" StrokeThickness="1.2" />
<Rectangle Canvas.Left="3" Canvas.Top="3" Width="14" Height="5" RadiusX="1" RadiusY="1" Fill="#1B3A5C" />
<Line StartPoint="4,10" EndPoint="17,10" Stroke="#1B3A5C" StrokeThickness="1" />
<Ellipse Canvas.Left="4" Canvas.Top="4" Width="2" Height="2" Fill="#00E676" />
<Ellipse Canvas.Left="8" Canvas.Top="4" Width="2" Height="2" Fill="#4FC3F7" />
<Rectangle Canvas.Left="1" Canvas.Top="1" Width="20" Height="16" RadiusX="2" RadiusY="2" Fill="{DynamicResource PrimaryBgBrush}" Stroke="{DynamicResource AccentTextBrush}" StrokeThickness="1.2" />
<Rectangle Canvas.Left="3" Canvas.Top="3" Width="14" Height="5" RadiusX="1" RadiusY="1" Fill="{DynamicResource AccentBgBrush}" />
<Line StartPoint="4,10" EndPoint="17,10" Stroke="{DynamicResource AccentBgBrush}" StrokeThickness="1" />
<Ellipse Canvas.Left="4" Canvas.Top="4" Width="2" Height="2" Fill="{DynamicResource SuccessBrush}" />
<Ellipse Canvas.Left="8" Canvas.Top="4" Width="2" Height="2" Fill="{DynamicResource AccentTextBrush}" />
</Canvas>
<TextBlock Text="基于多场景应用的 WCS 通用平台" FontSize="15" FontWeight="Bold" Foreground="#E1E8F0" />
<Border Background="#1B3A5C" CornerRadius="3" Padding="5,2" VerticalAlignment="Center">
<TextBlock Text="V1.0.0" FontSize="10" Foreground="#4FC3F7" />
<TextBlock Text="基于多场景应用的 WCS 通用平台" FontSize="15" FontWeight="Bold" Foreground="{DynamicResource TitleTextBrush}" />
<Border Background="{DynamicResource AccentBgBrush}" CornerRadius="3" Padding="5,2" VerticalAlignment="Center">
<TextBlock Text="V1.0.0" FontSize="10" Foreground="{DynamicResource AccentTextBrush}" />
</Border>
</StackPanel>
<!-- Right: Status + Time + User -->
<!-- Right: Status + Time + User + Theme -->
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="16" VerticalAlignment="Center">
<!-- 运行状态 -->
<StackPanel Orientation="Horizontal" Spacing="6">
<Ellipse Width="8" Height="8" Fill="#00E676" VerticalAlignment="Center" />
<TextBlock x:Name="StatusText" Text="运行正常" FontSize="12" Foreground="#8B9BB5" VerticalAlignment="Center" />
<Ellipse Width="8" Height="8" Fill="{DynamicResource SuccessBrush}" VerticalAlignment="Center" />
<TextBlock x:Name="StatusText" Text="运行正常" FontSize="12" Foreground="{DynamicResource SecondaryTextBrush}" VerticalAlignment="Center" />
</StackPanel>
<!-- 当前时间 -->
<TextBlock x:Name="ClockText" Text="2026-06-11 12:00:00" FontSize="12" Foreground="#6B8CB5" VerticalAlignment="Center" />
<TextBlock x:Name="ClockText" Text="2026-06-11 12:00:00" FontSize="12" Foreground="{DynamicResource MutedTextBrush}" VerticalAlignment="Center" />
<!-- 主题切换 -->
<Border x:Name="ThemeToggleBorder" Background="{DynamicResource PrimaryBgBrush}" CornerRadius="3"
BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1"
Cursor="Hand" Padding="8,3">
<StackPanel Orientation="Horizontal" Spacing="4">
<TextBlock x:Name="ThemeIcon" Text="&#x1F319;" FontSize="11" VerticalAlignment="Center" />
<TextBlock x:Name="ThemeLabel" Text="深色" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" />
</StackPanel>
</Border>
<!-- 登录用户 -->
<Border Background="#0F1F38" CornerRadius="3" Padding="10,4" BorderBrush="#1B3A5C" BorderThickness="1">
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="3" Padding="10,4" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Orientation="Horizontal" Spacing="6">
<TextBlock x:Name="UserText" Text="管理员" FontSize="12" Foreground="#DDE4F0" VerticalAlignment="Center" />
<TextBlock x:Name="UserText" Text="管理员" FontSize="12" Foreground="{DynamicResource PrimaryTextBrush}" VerticalAlignment="Center" />
</StackPanel>
</Border>
<!-- 退出 -->
<Button x:Name="LogoutBtn" Content="退出" FontSize="11"
Background="Transparent" Foreground="#8B9BB5"
BorderBrush="#1A2F4A" BorderThickness="1"
Background="Transparent" Foreground="{DynamicResource SecondaryTextBrush}"
BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1"
CornerRadius="3" Padding="10,4" />
</StackPanel>
</Grid>
</Border>
<!-- Menu Bar -->
<Border Grid.Row="1" Padding="16,0" Background="#0C1622" BorderBrush="#1A2F4A" BorderThickness="0,1,0,1">
<Border Grid.Row="1" Padding="16,0" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,1,0,1">
<Grid ColumnDefinitions="Auto,*">
<StackPanel Grid.Column="0" x:Name="MenuContainer" Orientation="Horizontal" Spacing="0" />
<!-- 当前页面路径 -->
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="16,0,0,0">
<TextBlock Text="{Binding CurrentPageTitle}" FontSize="12" Foreground="#4FC3F7" VerticalAlignment="Center" />
<TextBlock Text="{Binding CurrentPageTitle}" FontSize="12" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" />
</StackPanel>
</Grid>
</Border>
@ -69,49 +78,49 @@
<Border Grid.Row="2" x:Name="ContentArea" />
<!-- System Status Bar -->
<Border Grid.Row="3" Padding="16,4" Background="#0C1622" BorderBrush="#1A2F4A" BorderThickness="0,1,0,0">
<Border Grid.Row="3" Padding="16,4" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,1,0,0">
<Grid ColumnDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,*,Auto">
<!-- CPU -->
<StackPanel Grid.Column="0" Orientation="Horizontal" Spacing="4" VerticalAlignment="Center">
<Ellipse x:Name="CpuStatusDot" Width="6" Height="6" Fill="#00E676" VerticalAlignment="Center" />
<TextBlock Text="CPU" FontSize="11" Foreground="#6B8CB5" VerticalAlignment="Center" />
<TextBlock x:Name="CpuUsageText" Text="0.0%" FontSize="11" Foreground="#BCC8D6" VerticalAlignment="Center" />
<Ellipse x:Name="CpuStatusDot" Width="6" Height="6" Fill="{DynamicResource SuccessBrush}" VerticalAlignment="Center" />
<TextBlock Text="CPU" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" VerticalAlignment="Center" />
<TextBlock x:Name="CpuUsageText" Text="0.0%" FontSize="11" Foreground="{DynamicResource PrimaryTextBrush}" VerticalAlignment="Center" />
</StackPanel>
<Border Grid.Column="1" Width="1" Height="12" Background="#1A2F4A" Margin="10,0" VerticalAlignment="Center" />
<Border Grid.Column="1" Width="1" Height="12" Background="{DynamicResource BorderBrush}" Margin="10,0" VerticalAlignment="Center" />
<!-- Memory -->
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="4" VerticalAlignment="Center">
<Ellipse x:Name="MemStatusDot" Width="6" Height="6" Fill="#00E676" VerticalAlignment="Center" />
<TextBlock Text="内存" FontSize="11" Foreground="#6B8CB5" VerticalAlignment="Center" />
<TextBlock x:Name="MemUsageText" Text="0 MB" FontSize="11" Foreground="#BCC8D6" VerticalAlignment="Center" />
<Ellipse x:Name="MemStatusDot" Width="6" Height="6" Fill="{DynamicResource SuccessBrush}" VerticalAlignment="Center" />
<TextBlock Text="内存" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" VerticalAlignment="Center" />
<TextBlock x:Name="MemUsageText" Text="0 MB" FontSize="11" Foreground="{DynamicResource PrimaryTextBrush}" VerticalAlignment="Center" />
</StackPanel>
<Border Grid.Column="3" Width="1" Height="12" Background="#1A2F4A" Margin="10,0" VerticalAlignment="Center" />
<Border Grid.Column="3" Width="1" Height="12" Background="{DynamicResource BorderBrush}" Margin="10,0" VerticalAlignment="Center" />
<!-- Network -->
<StackPanel Grid.Column="4" Orientation="Horizontal" Spacing="4" VerticalAlignment="Center">
<Ellipse x:Name="NetStatusDot" Width="6" Height="6" Fill="#00E676" VerticalAlignment="Center" />
<TextBlock Text="网络" FontSize="11" Foreground="#6B8CB5" VerticalAlignment="Center" />
<TextBlock x:Name="NetStatusText" Text="已连接" FontSize="11" Foreground="#BCC8D6" VerticalAlignment="Center" />
<TextBlock Text="↓" FontSize="10" Foreground="#4B6A8A" VerticalAlignment="Center" Margin="4,0,0,0" />
<TextBlock x:Name="NetDownText" Text="0 KB/s" FontSize="11" Foreground="#4FC3F7" VerticalAlignment="Center" />
<TextBlock Text="↑" FontSize="10" Foreground="#4B6A8A" VerticalAlignment="Center" Margin="2,0,0,0" />
<TextBlock x:Name="NetUpText" Text="0 KB/s" FontSize="11" Foreground="#4FC3F7" VerticalAlignment="Center" />
<Ellipse x:Name="NetStatusDot" Width="6" Height="6" Fill="{DynamicResource SuccessBrush}" VerticalAlignment="Center" />
<TextBlock Text="网络" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" VerticalAlignment="Center" />
<TextBlock x:Name="NetStatusText" Text="已连接" FontSize="11" Foreground="{DynamicResource PrimaryTextBrush}" VerticalAlignment="Center" />
<TextBlock Text="↓" FontSize="10" Foreground="{DynamicResource SubtleTextBrush}" VerticalAlignment="Center" Margin="4,0,0,0" />
<TextBlock x:Name="NetDownText" Text="0 KB/s" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" />
<TextBlock Text="↑" FontSize="10" Foreground="{DynamicResource SubtleTextBrush}" VerticalAlignment="Center" Margin="2,0,0,0" />
<TextBlock x:Name="NetUpText" Text="0 KB/s" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" />
</StackPanel>
<!-- Uptime -->
<Border Grid.Column="5" Width="1" Height="12" Background="#1A2F4A" Margin="10,0" VerticalAlignment="Center" />
<Border Grid.Column="5" Width="1" Height="12" Background="{DynamicResource BorderBrush}" Margin="10,0" VerticalAlignment="Center" />
<StackPanel Grid.Column="6" Orientation="Horizontal" Spacing="4" VerticalAlignment="Center">
<TextBlock Text="运行时间" FontSize="11" Foreground="#6B8CB5" VerticalAlignment="Center" />
<TextBlock x:Name="UptimeText" Text="00:00:00" FontSize="11" Foreground="#BCC8D6" VerticalAlignment="Center" />
<TextBlock Text="运行时间" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" VerticalAlignment="Center" />
<TextBlock x:Name="UptimeText" Text="00:00:00" FontSize="11" Foreground="{DynamicResource PrimaryTextBrush}" VerticalAlignment="Center" />
</StackPanel>
<!-- WCS Version -->
<!-- Version -->
<StackPanel Grid.Column="7" Orientation="Horizontal" Spacing="12" VerticalAlignment="Center" Margin="24,0,0,0">
<TextBlock Text="Sln.Wcs.UI" FontSize="10" Foreground="#4B6A8A" VerticalAlignment="Center" />
<TextBlock Text="V1.0.0" FontSize="10" Foreground="#4FC3F7" VerticalAlignment="Center" />
<TextBlock Text="Sln.Wcs.UI" FontSize="10" Foreground="{DynamicResource SubtleTextBrush}" VerticalAlignment="Center" />
<TextBlock Text="V1.0.0" FontSize="10" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" />
</StackPanel>
</Grid>
</Border>

@ -9,6 +9,7 @@ using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Layout;
using Avalonia.Media;
using Avalonia.Styling;
using Sln.Wcs.UI.ViewModels;
namespace Sln.Wcs.UI.Views;
@ -24,6 +25,7 @@ public partial class MainWindow : Window
private long _prevBytesSent;
private long _prevBytesReceived;
private DateTime _prevNetCheck;
private bool _isDarkTheme = true;
public MainWindow(NavigationViewModel navigationVm)
{
@ -55,10 +57,27 @@ public partial class MainWindow : Window
(_prevBytesSent, _prevBytesReceived) = GetNetworkBytes();
_prevNetCheck = DateTime.UtcNow;
// 主题切换
ThemeToggleBorder.PointerPressed += (_, _) => ToggleTheme();
// 退出按钮
LogoutBtn.Click += (_, _) => Close();
}
private void ToggleTheme()
{
_isDarkTheme = !_isDarkTheme;
var app = Application.Current!;
app.RequestedThemeVariant = _isDarkTheme ? ThemeVariant.Dark : ThemeVariant.Light;
ThemeIcon.Text = _isDarkTheme ? "\U0001F319" : "☀️";
ThemeLabel.Text = _isDarkTheme ? "深色" : "浅色";
// 关闭所有弹出菜单后重建
CloseAllPopups();
BuildMenu();
}
private void RefreshSystemStatus()
{
// CPU usage
@ -135,13 +154,20 @@ public partial class MainWindow : Window
private void BuildMenu()
{
MenuContainer.Children.Clear();
// Use explicit colors per theme — code-behind FindResource doesn't resolve ThemeDictionaries reliably
var menuFg = Brush.Parse(_isDarkTheme ? "#8B9BB5" : "#656D76");
var menuHoverBg = Brush.Parse(_isDarkTheme ? "#1B3A5C" : "#BBDEFB");
var menuHoverFg = Brush.Parse(_isDarkTheme ? "#4FC3F7" : "#0969DA");
var popupBg = Brush.Parse(_isDarkTheme ? "#0F1620" : "#FAFBFC");
var popupBorder = Brush.Parse(_isDarkTheme ? "#1A2F4A" : "#D0D7DE");
foreach (var item in _navVm.TopMenuItems)
{
var btn = new Button
{
Content = item.Label,
Background = Brushes.Transparent,
Foreground = Brush.Parse("#8B9BB5"),
Foreground = menuFg,
FontSize = 13,
Padding = new Thickness(14, 12),
Cursor = new Cursor(StandardCursorType.Hand),
@ -162,10 +188,10 @@ public partial class MainWindow : Window
IsLightDismissEnabled = false,
};
var popupBorder = new Border
var popupBorderControl = new Border
{
Background = Brush.Parse("#0F1620"),
BorderBrush = Brush.Parse("#1A2F4A"),
Background = popupBg,
BorderBrush = popupBorder,
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(4),
MinWidth = 160,
@ -178,7 +204,7 @@ public partial class MainWindow : Window
{
Content = sub.Label,
Background = Brushes.Transparent,
Foreground = Brush.Parse("#8B9BB5"),
Foreground = menuFg,
FontSize = 12,
HorizontalAlignment = HorizontalAlignment.Stretch,
HorizontalContentAlignment = HorizontalAlignment.Left,
@ -192,28 +218,28 @@ public partial class MainWindow : Window
sub.Action();
};
subBtn.PointerEntered += (_, _) =>
subBtn.Background = Brush.Parse("#1B3A5C");
subBtn.Background = menuHoverBg;
subBtn.PointerExited += (_, _) =>
subBtn.Background = Brushes.Transparent;
stack.Children.Add(subBtn);
}
popupBorder.Child = stack;
popup.Child = popupBorder;
popupBorderControl.Child = stack;
popup.Child = popupBorderControl;
// Hover 展开,离开按钮或 popup 时关闭
var closeTimer = new System.Timers.Timer(200) { AutoReset = false };
bool mouseInPopup = false;
bool mouseInButton = false;
popupBorder.PointerEntered += (_, _) => { mouseInPopup = true; closeTimer.Stop(); };
popupBorder.PointerExited += (_, _) => { mouseInPopup = false; TryClose(); };
popupBorderControl.PointerEntered += (_, _) => { mouseInPopup = true; closeTimer.Stop(); };
popupBorderControl.PointerExited += (_, _) => { mouseInPopup = false; TryClose(); };
btn.PointerEntered += (_, _) =>
{
mouseInButton = true;
closeTimer.Stop();
btn.Background = Brush.Parse("#1B3A5C");
btn.Foreground = Brush.Parse("#4FC3F7");
btn.Background = menuHoverBg;
btn.Foreground = menuHoverFg;
CloseAllPopups();
popup.Open();
};
@ -242,7 +268,7 @@ public partial class MainWindow : Window
popup.Closed += (_, _) =>
{
btn.Background = Brushes.Transparent;
btn.Foreground = Brush.Parse("#8B9BB5");
btn.Foreground = menuFg;
};
_openPopups.Add(popup);
}
@ -250,13 +276,13 @@ public partial class MainWindow : Window
{
btn.PointerEntered += (_, _) =>
{
btn.Background = Brush.Parse("#1B3A5C");
btn.Foreground = Brush.Parse("#4FC3F7");
btn.Background = menuHoverBg;
btn.Foreground = menuHoverFg;
};
btn.PointerExited += (_, _) =>
{
btn.Background = Brushes.Transparent;
btn.Foreground = Brush.Parse("#8B9BB5");
btn.Foreground = menuFg;
};
}

@ -3,35 +3,35 @@
x:Class="Sln.Wcs.UI.Views.Path.PathDetailsListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索路径编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
<TextBox Grid.Column="0" Watermark="搜索路径编号/名称..." Text="{Binding SearchText}" Width="220" Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1.3*,1.2*,1.2*,0.8*,0.8*,0.8*">
<TextBlock Grid.Column="0" Text="路径编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="路径名称" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="起点" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="终点" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="设备类型" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="路径编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="路径名称" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="起点" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="终点" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="设备类型" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1">
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1.2*,1.3*,1.2*,1.2*,0.8*,0.8*,0.8*">
<TextBlock Grid.Column="0" Text="{Binding pathCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding pathName}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding startPoint}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding endPoint}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding deviceType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding pathCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding pathName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding startPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding endPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding deviceType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="6" Orientation="Horizontal" Spacing="6">
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
</StackPanel>
</Grid>
</Border>

@ -3,38 +3,43 @@
x:Class="Sln.Wcs.UI.Views.Path.PathInfoListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch" ClipToBounds="True">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索路径编号/名称..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
<TextBox Grid.Column="0" Watermark="搜索路径编号/名称..." Text="{Binding SearchText}" Width="220"
Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}"
Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}"
Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1.3*,0.8*,0.8*,1.2*,1.2*,0.8*,1*">
<TextBlock Grid.Column="0" Text="路径编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="路径名称" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="路径类型" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="路径类别" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="起点" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="终点" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="路径编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="路径名称" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="路径类型" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="路径类别" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="起点" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="终点" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1">
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}"
BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1.2*,1.3*,0.8*,0.8*,1.2*,1.2*,0.8*,1*">
<TextBlock Grid.Column="0" Text="{Binding pathCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding pathName}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding pathType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding pathCategory}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding startPoint}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding endPoint}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding pathCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding pathName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding pathType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding pathCategory}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding startPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding endPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="7" Orientation="Horizontal" Spacing="4">
<Button Content="明细" Tag="{Binding}" Click="Details_Click" Background="#0D7377" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="明细" Tag="{Binding}" Click="Details_Click" Background="{DynamicResource TealBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
</StackPanel>
</Grid>
</Border>
@ -45,48 +50,48 @@
<!-- Slide-out overlay panel -->
<Panel Grid.Row="0" Grid.RowSpan="3" IsVisible="{Binding IsPanelOpen}" ZIndex="10">
<Grid ColumnDefinitions="0.6*,1.4*">
<Border Grid.Column="0" x:Name="Backdrop" Background="#80000000" Opacity="0" PointerPressed="Backdrop_Pressed" />
<Border Grid.Column="0" x:Name="Backdrop" Background="{DynamicResource OverlayBgBrush}" Opacity="0" PointerPressed="Backdrop_Pressed" />
<Border Grid.Column="1" x:Name="SlideContent"
Background="#0C1622"
BorderBrush="#1A2F4A"
Background="{DynamicResource CardBgBrush}"
BorderBrush="{DynamicResource BorderBrush}"
BorderThickness="1,0,0,0">
<Border.RenderTransform>
<TranslateTransform X="3000" />
</Border.RenderTransform>
<Grid RowDefinitions="Auto,*">
<Border Grid.Row="0" Background="#0F1F38" Padding="14,10" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Grid.Row="0" Background="{DynamicResource PrimaryBgBrush}" Padding="14,10" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="*,Auto,Auto">
<TextBlock Grid.Column="0" Text="{Binding SlidePanelTitle}" FontSize="14" FontWeight="SemiBold" Foreground="#DDE4F0" VerticalAlignment="Center" />
<Button Grid.Column="1" Content="新增" Command="{Binding AddDetailCommand}" Background="#1565C0" Foreground="White" FontSize="12" Padding="12,5" Margin="0,0,10,0" />
<Button Grid.Column="2" Content="✕" Click="ClosePanel_Click" Background="Transparent" Foreground="#8B9BB5" FontSize="14" Padding="6,2" />
<TextBlock Grid.Column="0" Text="{Binding SlidePanelTitle}" FontSize="14" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" VerticalAlignment="Center" />
<Button Grid.Column="1" Content="新增" Command="{Binding AddDetailCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" FontSize="12" Padding="12,5" Margin="0,0,10,0" />
<Button Grid.Column="2" Content="✕" Click="ClosePanel_Click" Background="Transparent" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="14" Padding="6,2" />
</Grid>
</Border>
<Grid Grid.Row="1" RowDefinitions="Auto,*">
<Border Grid.Row="0" Background="#0C1622" Padding="10,6" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Grid.Row="0" Background="{DynamicResource CardBgBrush}" Padding="10,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="0.7*,1*,0.9*,0.9*,0.7*,0.5*,0.8*">
<TextBlock Grid.Column="0" Text="路径编号" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="路径名称" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="起点" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="终点" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="设备类型" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="启用" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="操作" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="路径编号" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="路径名称" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="起点" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="终点" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="设备类型" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="启用" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="操作" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="1" ItemsSource="{Binding DetailItems}" Background="Transparent" Foreground="#DDE4F0" BorderThickness="0">
<ListBox Grid.Row="1" ItemsSource="{Binding DetailItems}" Background="Transparent" Foreground="{DynamicResource PrimaryTextBrush}" BorderThickness="0">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="10,5" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="10,5" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="0.7*,1*,0.9*,0.9*,0.7*,0.5*,0.8*">
<TextBlock Grid.Column="0" Text="{Binding pathCode}" Foreground="#DDE4F0" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding pathName}" Foreground="#DDE4F0" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding startPoint}" Foreground="#64B5F6" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding endPoint}" Foreground="#64B5F6" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding deviceType}" Foreground="#8B9BB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding isFlag}" Foreground="#8B9BB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding pathCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding pathName}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding startPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding endPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding deviceType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding isFlag}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<StackPanel Grid.Column="6" Orientation="Horizontal" Spacing="4">
<Button Content="编辑" Tag="{Binding}" Click="DetailEdit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="DetailDelete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="编辑" Tag="{Binding}" Click="DetailEdit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="DetailDelete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
</StackPanel>
</Grid>
</Border>

@ -6,31 +6,31 @@
<Grid Grid.Row="0" ColumnDefinitions="Auto,*,Auto,Auto" Margin="0,0,0,8">
<StackPanel Grid.Column="0" Orientation="Horizontal" Spacing="6">
<Ellipse Width="8" Height="8" Fill="#00E676" VerticalAlignment="Center" />
<TextBlock Text="系统监控" FontSize="15" FontWeight="SemiBold" Foreground="#DDE4F0" VerticalAlignment="Center" />
<TextBlock Text="系统监控" FontSize="15" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" VerticalAlignment="Center" />
</StackPanel>
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="6" Margin="0,0,10,0">
<TextBlock Text="{Binding LogCount, StringFormat='共 {0} 条'}" FontSize="12" Foreground="#6B8CB5" VerticalAlignment="Center" />
<TextBlock Text="{Binding LogCount, StringFormat='共 {0} 条'}" FontSize="12" Foreground="{DynamicResource MutedTextBrush}" VerticalAlignment="Center" />
</StackPanel>
<Button Grid.Column="3" Content="清空" Command="{Binding ClearCommand}"
Background="#0F1F38" Foreground="#8B9BB5" Padding="12,5" FontSize="12" Margin="0,0,6,0" />
Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="12,5" FontSize="12" Margin="0,0,6,0" />
<Button Grid.Column="4" Content="{Binding AutoScroll, StringFormat={}{0} auto?}" Command="{Binding ToggleAutoScrollCommand}"
Background="#0F1F38" Foreground="#8B9BB5" Padding="12,5" FontSize="12" />
Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="12,5" FontSize="12" />
</Grid>
<!-- Log List -->
<Border Grid.Row="1" Background="#0C1622" CornerRadius="6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<ListBox x:Name="LogList" ItemsSource="{Binding Logs}"
Background="Transparent" Foreground="#BCC8D6" BorderThickness="0"
>
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="10,3" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="10,3" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<StackPanel Orientation="Horizontal" Spacing="10">
<TextBlock Text="{Binding TimeText}"
FontSize="11" Foreground="#4B5E7A" FontFamily="Menlo,Consolas,monospace"
VerticalAlignment="Center" Width="100" />
<TextBlock Text="{Binding Message}"
FontSize="11" Foreground="#8B9BB5" FontFamily="Menlo,Consolas,monospace"
FontSize="11" Foreground="{DynamicResource SecondaryTextBrush}" FontFamily="Menlo,Consolas,monospace"
TextWrapping="Wrap" VerticalAlignment="Center" />
</StackPanel>
</Border>

@ -3,47 +3,47 @@
x:Class="Sln.Wcs.UI.Views.Task.TaskDetailListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索任务编号/物料编号..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
<TextBox Grid.Column="0" Watermark="搜索任务编号/物料编号..." Text="{Binding SearchText}" Width="220" Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,0.9*,1*,1.1*,0.6*,0.6*,0.6*,0.9*,0.9*,0.7*,0.7*,0.7*,0.7*">
<TextBlock Grid.Column="0" Text="任务编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="路径编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="物料编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="托盘条码" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="数量" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="类别" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="起始位置" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="8" Text="结束位置" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="9" Text="设备" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="10" Text="状态" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="11" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="12" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="任务编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="路径编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="物料编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="托盘条码" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="数量" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="类别" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="起始位置" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="8" Text="结束位置" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="9" Text="设备" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="10" Text="状态" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="11" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="12" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1">
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1.2*,0.9*,1*,1.1*,0.6*,0.6*,0.6*,0.9*,0.9*,0.7*,0.7*,0.7*,0.7*">
<TextBlock Grid.Column="0" Text="{Binding taskCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding pathCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding materialCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding palletBarcode}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding materialCount}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding taskType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding taskCategory}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding startPoint}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="8" Text="{Binding endPoint}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="9" Text="{Binding deviceType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="10" Text="{Binding taskStatus}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="11" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding taskCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding pathCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding materialCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding palletBarcode}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding materialCount}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding taskType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding taskCategory}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding startPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="8" Text="{Binding endPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="9" Text="{Binding deviceType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="10" Text="{Binding taskStatus}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="11" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="12" Orientation="Horizontal" Spacing="6">
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="8,3" />
</StackPanel>
</Grid>
</Border>

@ -3,46 +3,51 @@
x:Class="Sln.Wcs.UI.Views.Task.TaskQueueListView">
<Grid RowDefinitions="Auto,Auto,*" Margin="20,14,20,14" VerticalAlignment="Stretch" ClipToBounds="True">
<Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,Auto" Margin="0,0,0,8">
<TextBox Grid.Column="0" Watermark="搜索任务编号/物料编号..." Text="{Binding SearchText}" Width="220" Background="#0C1622" Foreground="#DDE4F0" BorderBrush="#1A2F4A" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}" Background="#0F1F38" Foreground="#8B9BB5" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}" Background="#1565C0" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
<TextBox Grid.Column="0" Watermark="搜索任务编号/物料编号..." Text="{Binding SearchText}" Width="220"
Background="{DynamicResource CardBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}" BorderBrush="{DynamicResource BorderBrush}" />
<Button Grid.Column="1" Content="搜索" Command="{Binding SearchCommand}"
Background="{DynamicResource PrimaryBgBrush}" Foreground="{DynamicResource SecondaryTextBrush}" Padding="14,6" Margin="12,0,6,0" />
<Button Grid.Column="2" Content="新增" Command="{Binding AddCommand}"
Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" Padding="14,6" Margin="12,0,6,0" />
</Grid>
<Border Grid.Row="1" Background="#0C1622" Padding="8,6" BorderBrush="#1A2F4A" BorderThickness="1">
<Border Grid.Row="1" Background="{DynamicResource CardBgBrush}" Padding="8,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<Grid ColumnDefinitions="1.2*,1*,1.2*,0.6*,0.6*,0.6*,1*,1*,0.6*,0.6*,0.7*,1*">
<TextBlock Grid.Column="0" Text="任务编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="物料编号" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="托盘条码" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="数量" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="类别" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="起始位置" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="结束位置" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="8" Text="状态" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="9" Text="步骤" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="10" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="11" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="任务编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="物料编号" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="托盘条码" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="数量" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="类型" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="类别" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="起始位置" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="结束位置" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="8" Text="状态" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="9" Text="步骤" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="10" Text="备注" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="11" Text="操作" FontSize="12" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" Background="#0F1620" Foreground="#DDE4F0" BorderBrush="#1A2F4A" BorderThickness="1,0,1,1">
<ListBox Grid.Row="2" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
Background="{DynamicResource SurfaceBgBrush}" Foreground="{DynamicResource PrimaryTextBrush}"
BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1,0,1,1">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="8,4" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="8,4" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="1.2*,1*,1.2*,0.6*,0.6*,0.6*,1*,1*,0.6*,0.6*,0.7*,1*">
<TextBlock Grid.Column="0" Text="{Binding taskCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding materialCode}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding palletBarcode}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding materialCount}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding taskType}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding taskCategory}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding startPoint}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding endPoint}" Foreground="#64B5F6" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="8" Text="{Binding taskStatus}" Foreground="#8B9BB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="9" Text="{Binding taskSteps}" Foreground="#DDE4F0" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="10" Text="{Binding remark}" Foreground="#6B8CB5" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding taskCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding materialCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding palletBarcode}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding materialCount}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding taskType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding taskCategory}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding startPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="7" Text="{Binding endPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="8" Text="{Binding taskStatus}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="9" Text="{Binding taskSteps}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="12" VerticalAlignment="Center" />
<TextBlock Grid.Column="10" Text="{Binding remark}" Foreground="{DynamicResource MutedTextBrush}" FontSize="12" VerticalAlignment="Center" />
<StackPanel Grid.Column="11" Orientation="Horizontal" Spacing="4">
<Button Content="明细" Tag="{Binding}" Click="Details_Click" Background="#0D7377" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="明细" Tag="{Binding}" Click="Details_Click" Background="{DynamicResource TealBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="编辑" Tag="{Binding}" Click="Edit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="Delete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
</StackPanel>
</Grid>
</Border>
@ -53,50 +58,50 @@
<!-- Slide-out overlay panel -->
<Panel Grid.Row="0" Grid.RowSpan="3" IsVisible="{Binding IsPanelOpen}" ZIndex="10">
<Grid ColumnDefinitions="0.6*,1.4*">
<Border Grid.Column="0" x:Name="Backdrop" Background="#80000000" Opacity="0" PointerPressed="Backdrop_Pressed" />
<Border Grid.Column="0" x:Name="Backdrop" Background="{DynamicResource OverlayBgBrush}" Opacity="0" PointerPressed="Backdrop_Pressed" />
<Border Grid.Column="1" x:Name="SlideContent"
Background="#0C1622"
BorderBrush="#1A2F4A"
Background="{DynamicResource CardBgBrush}"
BorderBrush="{DynamicResource BorderBrush}"
BorderThickness="1,0,0,0">
<Border.RenderTransform>
<TranslateTransform X="3000" />
</Border.RenderTransform>
<Grid RowDefinitions="Auto,*">
<Border Grid.Row="0" Background="#0F1F38" Padding="14,10" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Grid.Row="0" Background="{DynamicResource PrimaryBgBrush}" Padding="14,10" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="*,Auto,Auto">
<TextBlock Grid.Column="0" Text="{Binding SlidePanelTitle}" FontSize="14" FontWeight="SemiBold" Foreground="#DDE4F0" VerticalAlignment="Center" />
<Button Grid.Column="1" Content="新增" Command="{Binding AddDetailCommand}" Background="#1565C0" Foreground="White" FontSize="12" Padding="12,5" Margin="0,0,10,0" />
<Button Grid.Column="2" Content="✕" Click="ClosePanel_Click" Background="Transparent" Foreground="#8B9BB5" FontSize="14" Padding="6,2" />
<TextBlock Grid.Column="0" Text="{Binding SlidePanelTitle}" FontSize="14" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" VerticalAlignment="Center" />
<Button Grid.Column="1" Content="新增" Command="{Binding AddDetailCommand}" Background="{DynamicResource PrimaryBtnBrush}" Foreground="White" FontSize="12" Padding="12,5" Margin="0,0,10,0" />
<Button Grid.Column="2" Content="✕" Click="ClosePanel_Click" Background="Transparent" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="14" Padding="6,2" />
</Grid>
</Border>
<Grid Grid.Row="1" RowDefinitions="Auto,*">
<Border Grid.Row="0" Background="#0C1622" Padding="10,6" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Grid.Row="0" Background="{DynamicResource CardBgBrush}" Padding="10,6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="0.8*,1*,1.2*,1.2*,0.8*,0.7*,0.7*,1*">
<TextBlock Grid.Column="0" Text="路径编号" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="1" Text="物料编号" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="2" Text="起始位置" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="3" Text="结束位置" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="4" Text="设备类型" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="5" Text="状态" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="6" Text="启用" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="7" Text="操作" FontSize="11" FontWeight="SemiBold" Foreground="#8B9BB5" />
<TextBlock Grid.Column="0" Text="路径编号" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="1" Text="物料编号" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="2" Text="起始位置" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="3" Text="结束位置" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="4" Text="设备类型" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="5" Text="状态" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="6" Text="启用" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
<TextBlock Grid.Column="7" Text="操作" FontSize="11" FontWeight="SemiBold" Foreground="{DynamicResource SecondaryTextBrush}" />
</Grid>
</Border>
<ListBox Grid.Row="1" ItemsSource="{Binding DetailItems}" Background="Transparent" Foreground="#DDE4F0" BorderThickness="0">
<ListBox Grid.Row="1" ItemsSource="{Binding DetailItems}" Background="Transparent" Foreground="{DynamicResource PrimaryTextBrush}" BorderThickness="0">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="10,5" BorderBrush="#1A2F4A" BorderThickness="0,0,0,1">
<Border Padding="10,5" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="0.8*,1*,1.2*,1.2*,0.8*,0.7*,0.7*,1*">
<TextBlock Grid.Column="0" Text="{Binding pathCode}" Foreground="#DDE4F0" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding materialCode}" Foreground="#DDE4F0" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding startPoint}" Foreground="#64B5F6" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding endPoint}" Foreground="#64B5F6" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding deviceType}" Foreground="#8B9BB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding taskStatus}" Foreground="#8B9BB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding isFlag}" Foreground="#8B9BB5" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="0" Text="{Binding pathCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding materialCode}" Foreground="{DynamicResource PrimaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding startPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="3" Text="{Binding endPoint}" Foreground="{DynamicResource AccentTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="4" Text="{Binding deviceType}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="5" Text="{Binding taskStatus}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<TextBlock Grid.Column="6" Text="{Binding isFlag}" Foreground="{DynamicResource SecondaryTextBrush}" FontSize="11" VerticalAlignment="Center" />
<StackPanel Grid.Column="7" Orientation="Horizontal" Spacing="4">
<Button Content="编辑" Tag="{Binding}" Click="DetailEdit_Click" Background="#0277BD" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="DetailDelete_Click" Background="#B71C1C" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="编辑" Tag="{Binding}" Click="DetailEdit_Click" Background="{DynamicResource InfoBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
<Button Content="删除" Tag="{Binding}" Click="DetailDelete_Click" Background="{DynamicResource DangerBtnBrush}" Foreground="White" FontSize="11" Padding="6,3" />
</StackPanel>
</Grid>
</Border>

Loading…
Cancel
Save