From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 Plugin.DODriverControl/SingleControl.xaml |  365 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 365 insertions(+), 0 deletions(-)

diff --git a/Plugin.DODriverControl/SingleControl.xaml b/Plugin.DODriverControl/SingleControl.xaml
new file mode 100644
index 0000000..e04d895
--- /dev/null
+++ b/Plugin.DODriverControl/SingleControl.xaml
@@ -0,0 +1,365 @@
+锘�<hb:SimpleMaskControl x:Class="Plugin.DODriverControl.SingleControl"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:Plugin.DODriverControl"
+             mc:Ignorable="d"
+             xmlns:hb="clr-namespace:HMI.Base;assembly=HMI.Base"
+            xmlns:uic="clr-namespace:HMI.UI.Converter;assembly=HMI.UI"
+            xmlns:ui="clr-namespace:HMI.UI;assembly=HMI.UI"
+            xmlns:mdi="clr-namespace:HMI.UI.MDI;assembly=HMI.UI"
+            xmlns:pw="https://opensource.panuon.com/wpf"
+            xmlns:pu="https://opensource.panuon.com/wpf-ui"
+            xmlns:dp="clr-namespace:HMI.UI.DpUtil;assembly=HMI.UI"
+             Background="#FFF"
+             Loaded="UserControl_Loaded"
+             d:DesignHeight="450" d:DesignWidth="800">
+    <hb:SimpleMaskControl.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <pu:StyleDictionary Includes="TabControl" />
+                <ResourceDictionary Source="/HMI.UI;component/Style/PanuonListView.xaml"/>
+            </ResourceDictionary.MergedDictionaries>
+            <Style TargetType="GroupBox">
+                <Setter Property="FontSize" Value="14"/>
+                <Setter Property="HeaderTemplate">
+                    <Setter.Value>
+                        <DataTemplate>
+                            <TextBlock Text="{Binding }" FontSize="12" TextWrapping="Wrap"/>
+                        </DataTemplate>
+                    </Setter.Value>
+                </Setter>
+            </Style>
+        </ResourceDictionary>
+    </hb:SimpleMaskControl.Resources>
+    <Grid dp:GridHelper.Space="8">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="Auto"/>
+            <RowDefinition/>
+        </Grid.RowDefinitions>
+
+        <DockPanel>
+            <StackPanel dp:StackPanelHelper.ChildSpace="10" DockPanel.Dock="Right" Orientation="Horizontal">
+                <Button Style="{StaticResource AddBtn}" x:Name="addBtn" Click="Button_Click"/>
+                <Button Style="{StaticResource RfhBtn}" x:Name="rfhBtn" Click="Button_Click"/>
+                <Button Style="{StaticResource ExportBtn}" x:Name="exportBtn" Click="Button_Click"/>
+                <Button Style="{StaticResource ImportBtn}" x:Name="importBtn" Click="Button_Click"/>
+                <!--<Button Style="{StaticResource DelBtn}"/>-->
+            </StackPanel>
+
+            <StackPanel Orientation="Horizontal" VerticalAlignment="Center" dp:StackPanelHelper.ChildSpace="10">
+                <pu:FormGroup FontSize="18" Header="鎺у埗鍣ㄧ姸鎬�" Orientation="Horizontal">
+                    <ui:LightBall Size="20" Value="{Binding ConnectStatus}">
+                        <ui:LightBall.Style>
+                            <Style TargetType="ui:LightBall">
+                                <Style.Triggers>
+                                    <DataTrigger Binding="{Binding ConnectStatus}" Value="True">
+                                        <Setter Property="Content" Value="宸茶繛鎺�"/>
+                                    </DataTrigger>
+                                    <DataTrigger Binding="{Binding ConnectStatus}" Value="False">
+                                        <Setter Property="Content" Value="鏈繛鎺�"/>
+                                    </DataTrigger>
+                                </Style.Triggers>
+                            </Style>
+                        </ui:LightBall.Style>
+                    </ui:LightBall>
+                </pu:FormGroup>
+                <Button Style="{StaticResource ResetBtn}" 
+            x:Name="reConnectBtn" Click="Button_Click" Content="閲嶆柊杩炴帴"
+            IsEnabled="{Binding ConnectStatus,Converter={StaticResource reverseBool}}"/>
+                <Button Style="{StaticResource SettingBtn}" x:Name="configBtn" Click="Button_Click"/>
+            </StackPanel>
+        </DockPanel>
+
+        <TabControl Grid.Row="1"
+pu:TabControlHelper.HeaderPanelAlignment="Stretch"
+pu:TabControlHelper.ItemsBackground="{DynamicResource VerBar}"
+pu:TabControlHelper.ItemsForeground="#FFFFFF"
+pu:TabControlHelper.ItemsFontSize="14"
+pu:TabControlHelper.ItemsHeight="30"
+pu:TabControlHelper.ItemsHorizontalHeaderAlignment="Left"
+pu:TabControlHelper.ItemsHoverBackground="{DynamicResource SecondPrimaryColor}"
+pu:TabControlHelper.ItemsHoverForeground="#FFFFFF"
+pu:TabControlHelper.ItemsPadding="20,0,0,0"
+pu:TabControlHelper.ItemsRibbonLineCornerRadius="4"
+pu:TabControlHelper.ItemsRibbonLineMargin="0,5,0,5"
+pu:TabControlHelper.ItemsRibbonLineThickness="4"
+pu:TabControlHelper.ItemsRibbonLineVisibility="Visible"
+pu:TabControlHelper.ItemsSelectedBackground="#FFF"
+pu:TabControlHelper.ItemsSelectedRibbonLineBrush="#FFFFFF"
+pu:TabControlHelper.ItemsSelectedRibbonLineThickness="2"
+pu:TabControlHelper.ItemsWidth="100" >
+            <TabControl.Template>
+                <ControlTemplate TargetType="{x:Type TabControl}">
+                    <Grid>
+                        <Grid.RowDefinitions>
+                            <RowDefinition Height="Auto"/>
+                            <RowDefinition Height="*"/>
+                        </Grid.RowDefinitions>
+                        <Border BorderThickness="1,1,1,0" BorderBrush="#acacac" Background="{DynamicResource VerBar}" Padding="2,2,10,0">
+                            <TabPanel x:Name="HeaderPanel" Grid.Row="0" Panel.ZIndex="1" IsItemsHost="True"/>
+                        </Border>
+
+                        <Border Grid.Row="1" BorderBrush="{TemplateBinding BorderBrush}" 
+                    BorderThickness="1,0,1,1" Background="{TemplateBinding Background}">
+                            <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent"/>
+                        </Border>
+                    </Grid>
+                </ControlTemplate>
+            </TabControl.Template>
+
+            <TabItem Header="DIO">
+                <Grid dp:GridHelper.Space="5" Background="#f7f7f7">
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="Auto"/>
+                        <RowDefinition/>
+                    </Grid.RowDefinitions>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition/>
+                        <ColumnDefinition/>
+                    </Grid.ColumnDefinitions>
+                    <Label Grid.Row="0" Grid.Column="0">DI</Label>
+                    <Label Grid.Row="0" Grid.Column="1">DO</Label>
+
+                    <ScrollViewer Grid.Row="1" Grid.Column="0"
+                                  Style="{StaticResource DefaultScrollViewer}"
+                                  VerticalScrollBarVisibility="Auto">
+                        <WrapPanel Background="#FFF"  x:Name="diWrap"/>
+                    </ScrollViewer>
+                    <ScrollViewer Grid.Row="1" Grid.Column="1" 
+                                  Style="{StaticResource DefaultScrollViewer}"
+                                  VerticalScrollBarVisibility="Auto">
+                        <WrapPanel Background="#FFF" x:Name="doWrap"/>
+                    </ScrollViewer>
+                </Grid>
+            </TabItem>
+            <TabItem Header="鍒楄〃">
+                <Grid>
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="Auto"/>
+                        <RowDefinition/>
+                    </Grid.RowDefinitions>
+                    <ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="table"
+                      ItemsSource="{Binding Datasource}"
+                      VirtualizingPanel.IsContainerVirtualizable="True"
+VirtualizingPanel.IsVirtualizing="True" 
+VirtualizingPanel.VirtualizationMode="Standard">
+                        <ListView.Resources>
+                            <Style x:Key="RowLink" TargetType="Button" BasedOn="{StaticResource LinkButton}">
+                                <Style.Triggers>
+                                    <DataTrigger Binding="{Binding Path=IsMouseOver,
+                RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListViewItem,AncestorLevel=1}}" 
+         Value="True">
+                                        <Setter Property="Foreground" Value="#FFF"/>
+                                    </DataTrigger>
+                                    <DataTrigger Binding="{Binding Path=IsSelected,
+       RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListViewItem,AncestorLevel=1}}" 
+Value="True">
+                                        <Setter Property="Foreground" Value="#FFF"/>
+                                    </DataTrigger>
+                                </Style.Triggers>
+                            </Style>
+
+                            <Style x:Key="DeleteLink" TargetType="Button" BasedOn="{StaticResource DangerLinkButton}">
+                                <Setter Property="Content" Value="{DynamicResource App.Delete}"/>
+                            </Style>
+
+                            <Style x:Key="EditLink" TargetType="Button" BasedOn="{StaticResource RowLink}">
+                                <Setter Property="Content" Value="{DynamicResource App.Edit}"/>
+                            </Style>
+                        </ListView.Resources>
+                        <ListView.View>
+                            <GridView AllowsColumnReorder="False">
+                                <GridViewColumn Width="60" Header="#">
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <TextBlock Text="{Binding Converter={StaticResource lvRowNumber},
+RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListViewItem,AncestorLevel=1}}"/>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+
+                                <GridViewColumn Width="700">
+                                    <GridViewColumn.Header>
+                                        <TextBlock Text="{DynamicResource doc.name}"/>
+                                    </GridViewColumn.Header>
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                           Text="{Binding Name}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="100">
+                                    <GridViewColumn.Header>
+                                        <TextBlock Text="{DynamicResource doc.address}"/>
+                                    </GridViewColumn.Header>
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" 
+   Text="{Binding Address}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="120">
+                                    <GridViewColumn.Header>
+                                        <TextBlock Text="DIO"/>
+                                    </GridViewColumn.Header>
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                   Text="{Binding Dio}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="200">
+                                    <GridViewColumn.Header>
+                                        <TextBlock Text="{DynamicResource doc.pressDownValue}"/>
+                                    </GridViewColumn.Header>
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                   Text="{Binding PressDownValue}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="200">
+                                    <GridViewColumn.Header>
+                                        <TextBlock Text="{DynamicResource doc.pressDownText}"/>
+                                    </GridViewColumn.Header>
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                   Text="{Binding PressDownText}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="200">
+                                    <GridViewColumn.Header>
+                                        <TextBlock Text="{DynamicResource doc.pressUpValue}"/>
+                                    </GridViewColumn.Header>
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                                                   Text="{Binding PressUpValue}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="200">
+                                    <GridViewColumn.Header>
+                                        <TextBlock Text="{DynamicResource doc.pressUpText}"/>
+                                    </GridViewColumn.Header>
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <Border Style="{StaticResource CellBorder}">
+                                                <TextBlock Style="{StaticResource ListTableTextBlock}" 
+                   Text="{Binding PressUpText}"/>
+                                            </Border>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                                <GridViewColumn Width="120">
+                                    <GridViewColumn.Header>
+                                        <TextBlock Text="{DynamicResource App.Opt}"/>
+                                    </GridViewColumn.Header>
+                                    <GridViewColumn.CellTemplate>
+                                        <DataTemplate>
+                                            <StackPanel Orientation="Horizontal" dp:StackPanelHelper.ChildSpace="10">
+                                                <Button x:Name="editBtn" Style="{StaticResource EditLink}" 
+                Click="Button_Click" Tag="{Binding }"/>
+
+                                                <Button x:Name="delBtn" Style="{StaticResource DeleteLink}" 
+                Click="Button_Click" Tag="{Binding }"/>
+                                            </StackPanel>
+                                        </DataTemplate>
+                                    </GridViewColumn.CellTemplate>
+                                </GridViewColumn>
+                            </GridView>
+                        </ListView.View>
+                    </ListView>
+                    <!--<DataGrid Grid.Row="1" Style="{StaticResource DefaultDataGrid}" ItemsSource="{Binding Datasource}">
+                        <DataGrid.Columns>
+                            <DataGridTemplateColumn Header="#" CanUserResize="False">
+                                <DataGridTemplateColumn.CellTemplate>
+                                    <DataTemplate>
+                                        <TextBlock Text="{Binding Converter={StaticResource rowNumber},
+RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow},AncestorLevel=1}}"/>
+                                    </DataTemplate>
+                                </DataGridTemplateColumn.CellTemplate>
+                            </DataGridTemplateColumn>
+                            <DataGridTextColumn Width="*" Binding="{Binding Name}">
+                                <DataGridTextColumn.Header>
+                                    <TextBlock Text="{DynamicResource doc.name}"/>
+                                </DataGridTextColumn.Header>
+                            </DataGridTextColumn>
+                            <DataGridTextColumn Width="*" Binding="{Binding Address}">
+                                <DataGridTextColumn.Header>
+                                    <TextBlock Text="{DynamicResource doc.address}"/>
+                                </DataGridTextColumn.Header>
+                            </DataGridTextColumn>
+                            <DataGridTextColumn Width="*" Binding="{Binding Dio}">
+                                <DataGridTextColumn.Header>
+                                    <TextBlock Text="DIO"/>
+                                </DataGridTextColumn.Header>
+                            </DataGridTextColumn>
+
+                            <DataGridTextColumn Width="*" Binding="{Binding PressDownValue}">
+                                <DataGridTextColumn.Header>
+                                    <TextBlock Text="{DynamicResource doc.pressDownValue}"/>
+                                </DataGridTextColumn.Header>
+                            </DataGridTextColumn>
+
+                            <DataGridTextColumn Width="*" Binding="{Binding PressDownText}">
+                                <DataGridTextColumn.Header>
+                                    <TextBlock Text="{DynamicResource doc.pressDownText}"/>
+                                </DataGridTextColumn.Header>
+                            </DataGridTextColumn>
+
+                            <DataGridTextColumn Width="*" Binding="{Binding PressUpValue}">
+                                <DataGridTextColumn.Header>
+                                    <TextBlock Text="{DynamicResource doc.pressUpValue}"/>
+                                </DataGridTextColumn.Header>
+                            </DataGridTextColumn>
+
+                            <DataGridTextColumn Width="*" Binding="{Binding PressUpText}">
+                                <DataGridTextColumn.Header>
+                                    <TextBlock Text="{DynamicResource doc.pressUpText}"/>
+                                </DataGridTextColumn.Header>
+                            </DataGridTextColumn>
+
+                            <DataGridTemplateColumn Width="110" IsReadOnly="True" CanUserResize="False">
+                                <DataGridTemplateColumn.Header>
+                                    <TextBlock Text="{DynamicResource App.Opt}"/>
+                                </DataGridTemplateColumn.Header>
+                                <DataGridTemplateColumn.CellTemplate>
+                                    <DataTemplate>
+                                        <StackPanel Orientation="Horizontal" dp:StackPanelHelper.ChildSpace="10">
+                                            <Button x:Name="editBtn" Style="{StaticResource EditLink}" 
+                                                    Click="Button_Click" DataContext="{Binding }"/>
+
+                                            <Button x:Name="delBtn" Style="{StaticResource DeleteLink}" 
+                                                    Click="Button_Click" DataContext="{Binding }"/>
+                                        </StackPanel>
+                                    </DataTemplate>
+                                </DataGridTemplateColumn.CellTemplate>
+                            </DataGridTemplateColumn>
+                        </DataGrid.Columns>
+                    </DataGrid>-->
+                </Grid>
+            </TabItem>
+        </TabControl>
+    </Grid>
+</hb:SimpleMaskControl>

--
Gitblit v1.9.1