From e57938fbda9bff702004038f76d009422968bff5 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期五, 06 十一月 2026 18:05:07 +0800
Subject: [PATCH] 提交代码
---
DeviceService/MainWindow.xaml | 181 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 181 insertions(+), 0 deletions(-)
diff --git a/DeviceService/MainWindow.xaml b/DeviceService/MainWindow.xaml
new file mode 100644
index 0000000..aeaa9f2
--- /dev/null
+++ b/DeviceService/MainWindow.xaml
@@ -0,0 +1,181 @@
+<Window x:Class="DeviceService.MainWindow"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:local="clr-namespace:DeviceService"
+ xmlns:service="clr-namespace:DeviceService.Service"
+ mc:Ignorable="d"
+ Title="璁惧鏈嶅姟" Height="560" Width="960"
+ Background="{StaticResource PageBackgroundBrush}">
+ <Grid Margin="12">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="250" />
+ <ColumnDefinition Width="*" />
+ </Grid.ColumnDefinitions>
+
+ <!-- 宸︿晶锛氭寜 Type 鍒嗙粍鐨勮澶囨爲 -->
+ <Border Grid.Column="0" Style="{StaticResource CardBorder}" Margin="0,0,10,0">
+ <DockPanel Margin="4">
+ <TextBlock DockPanel.Dock="Top"
+ Style="{StaticResource TitleText}"
+ Text="璁惧鍒楄〃"
+ Margin="6,2,0,10" />
+ <TreeView x:Name="DeviceTree"
+ Background="Transparent"
+ BorderThickness="0"
+ ItemContainerStyle="{StaticResource DeviceTreeViewItem}"
+ SelectedItemChanged="DeviceTree_SelectedItemChanged">
+ <TreeView.Resources>
+ <HierarchicalDataTemplate DataType="{x:Type local:DeviceGroupNode}"
+ ItemsSource="{Binding Children}">
+ <StackPanel Orientation="Horizontal">
+ <Border Background="{StaticResource AccentFaintBrush}"
+ CornerRadius="4"
+ Padding="5,1"
+ Margin="0,0,6,0">
+ <TextBlock Text="{Binding Type}"
+ FontSize="11"
+ FontWeight="Bold"
+ Foreground="{StaticResource AccentPressedBrush}" />
+ </Border>
+ </StackPanel>
+ </HierarchicalDataTemplate>
+ <DataTemplate DataType="{x:Type local:DeviceNode}">
+ <TextBlock Text="{Binding DisplayName}" TextTrimming="CharacterEllipsis" />
+ </DataTemplate>
+ </TreeView.Resources>
+ </TreeView>
+ </DockPanel>
+ </Border>
+
+ <!-- 鍙充晶锛氬伐鍏锋爮 + 璁惧閰嶇疆鍖哄煙 -->
+ <Grid Grid.Column="1">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="*" />
+ </Grid.RowDefinitions>
+
+ <DockPanel Grid.Row="0" Margin="0,0,0,10">
+ <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" VerticalAlignment="Center">
+ <!-- 鏈嶅姟鐘舵�佸窘鏍囷細缁戝畾鍏ㄥ眬鐘舵�佹満 ServiceStateMachine.GlobalState.State -->
+ <Border x:Name="ServiceStateBadge"
+ CornerRadius="12"
+ Padding="12,5"
+ Margin="0,0,12,0"
+ VerticalAlignment="Center">
+ <Border.Style>
+ <Style TargetType="Border">
+ <Setter Property="Background" Value="#F3F4F6" />
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
+ Value="Running">
+ <Setter Property="Background" Value="#D1FAE5" />
+ </DataTrigger>
+ <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
+ Value="Error">
+ <Setter Property="Background" Value="#FEE2E2" />
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Border.Style>
+ <TextBlock x:Name="ServiceStateText" FontSize="12.5" FontWeight="SemiBold">
+ <TextBlock.Style>
+ <Style TargetType="TextBlock">
+ <Setter Property="Text" Value="鏈惎鍔�" />
+ <Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}" />
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
+ Value="Running">
+ <Setter Property="Text" Value="杩愯涓�" />
+ <Setter Property="Foreground" Value="#047857" />
+ </DataTrigger>
+ <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
+ Value="Error">
+ <Setter Property="Text" Value="寮傚父" />
+ <Setter Property="Foreground" Value="#B91C1C" />
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </TextBlock.Style>
+ </TextBlock>
+ </Border>
+
+ <!-- 鍚姩/鍋滄锛歊unning 鏃舵枃妗堝彉涓衡�滃仠姝⑩�濓紝鐐瑰嚮璧板仠姝㈤�昏緫 -->
+ <Button x:Name="StartServiceBtn"
+ MinWidth="92"
+ Click="StartService_Click">
+ <Button.Style>
+ <Style TargetType="Button" BasedOn="{StaticResource PrimaryButton}">
+ <Setter Property="Content" Value="鍚姩" />
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
+ Value="Running">
+ <Setter Property="Content" Value="鍋滄" />
+ <Setter Property="Background" Value="#B91C1C" />
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Button.Style>
+ </Button>
+
+ <!-- 娣诲姞璁惧锛氭湇鍔¤繍琛屼腑绂佹鎿嶄綔 -->
+ <Button x:Name="AddDeviceButton"
+ MinWidth="92"
+ Margin="8,0,0,0"
+ Content="娣诲姞璁惧"
+ Click="AddDeviceButton_Click">
+ <Button.Style>
+ <Style TargetType="Button" BasedOn="{StaticResource PrimaryButton}">
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
+ Value="Running">
+ <Setter Property="IsEnabled" Value="False" />
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Button.Style>
+ </Button>
+
+ <!-- 鍒锋柊锛氭湇鍔¤繍琛屼腑绂佹鎿嶄綔 -->
+ <Button x:Name="RefreshButton"
+ MinWidth="72"
+ Margin="8,0,0,0"
+ Content="鍒锋柊"
+ Click="RefreshButton_Click">
+ <Button.Style>
+ <Style TargetType="Button" BasedOn="{StaticResource SecondaryButton}">
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
+ Value="Running">
+ <Setter Property="IsEnabled" Value="False" />
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Button.Style>
+ </Button>
+ <Button x:Name="DebugWindowButton"
+ Style="{StaticResource SecondaryButton}"
+ MinWidth="92"
+ Margin="8,0,0,0"
+ Content="璋冭瘯绐楀彛"
+ Click="DebugWindowButton_Click" />
+ <Button x:Name="LogWindowButton"
+ Style="{StaticResource SecondaryButton}"
+ MinWidth="72"
+ Margin="8,0,0,0"
+ Content="鏃ュ織"
+ Click="LogWindowButton_Click" />
+ </StackPanel>
+ <TextBlock x:Name="HeaderText"
+ Style="{StaticResource SectionText}"
+ Text="璁惧閰嶇疆"
+ VerticalAlignment="Center" />
+ </DockPanel>
+
+ <Border Grid.Row="1" Style="{StaticResource CardBorder}">
+ <ContentControl x:Name="ConfigHost" Margin="4" Focusable="False" />
+ </Border>
+ </Grid>
+ </Grid>
+</Window>
--
Gitblit v1.9.1