C3032
2025-12-20 38c333f8091e5062be0bbdd81960315ebce69008
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<Window x:Class="SmartScanner.ProductManager"
        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:SmartScanner"
        mc:Ignorable="d"
        Title="设备管理" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
 
        <!-- 输入控制区 -->
        <StackPanel Grid.Row="0" Orientation="Horizontal">
            <TextBlock Text="连接顺序:" VerticalAlignment="Center"/>
            <ComboBox x:Name="cmbOrder" Width="80" Margin="5,0"
                     DisplayMemberPath="." SelectedValuePath="."/>
 
            <TextBlock Text="相机IP:" VerticalAlignment="Center" Margin="10,0,0,0"/>
            <ComboBox x:Name="cmbIP" Width="150" Margin="5,0" 
                     ItemsSource="{Binding AvailableIPs}"/>
 
            <!--<TextBlock Text="模型选择:" VerticalAlignment="Center" Margin="10,0,0,0"/>
            <ComboBox x:Name="cmbModel" Width="150" Margin="5,0" 
                     ItemsSource="{Binding AvailableIPs}"/>-->
 
            <Button x:Name="DeviceRefresh_PM" Content="刷新设备" Width="80" Margin="10,0" Click="BtnRefreshDevices_Click"/>
            <Button x:Name="AddMapping_PM" Content="添加映射" Width="80" Margin="5,0" Click="BtnAddMapping_Click"/>
            <Button x:Name="SaveConfig_PM" Content="保存" Width="80" Margin="5,0" Click="BtnSave_Click"/>
            <Button x:Name="LoadConfig_PM" Content="加载映射" Width="80" Margin="5,0" Click="BtnLoad_Click"/>
        </StackPanel>
 
        <!-- 映射表显示 -->
        <DataGrid Grid.Row="1" x:Name="dgMapping" AutoGenerateColumns="False" 
                 CanUserAddRows="False" CanUserDeleteRows="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="连接顺序" Binding="{Binding Key}" Width="*"/>
                <DataGridTextColumn Header="相机IP" Binding="{Binding Value}" Width="2*"/>
                <!--<DataGridTextColumn Header="推理模型" Binding="{Binding DetectorSelect}" Width="*"/>-->
                <DataGridTemplateColumn Header="操作" Width="100">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Content="移除" Click="DeleteMapping_Click"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
 
        <!-- 状态栏 -->
        <StatusBar Grid.Row="2">
            <StatusBarItem>
                <TextBlock x:Name="tbStatus" Text="就绪"/>
            </StatusBarItem>
        </StatusBar>
    </Grid>
</Window>