alielie
2025-03-18 a061384ba628a09bf4df91f50321ab22c03129aa
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<UserControl x:Class="WPFProject.UI.Test.SequnceList"
             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:WPFProject.UI.Test"
             xmlns:hc="https://handyorg.github.io/handycontrol"
             xmlns:dd="urn:gong-wpf-dragdrop"
             
             mc:Ignorable="d" 
             Background="#FFF"
             d:DesignHeight="450" d:DesignWidth="800">
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
                <ResourceDictionary Source="/HMI.UI;component/Style/Colors.xaml"/>
                <ResourceDictionary Source="/HMI.UI;component/Style/WindowResources.xaml"/>
                <ResourceDictionary Source="/WPFProject;component/Style/ListViewStyle.xaml"/>
            </ResourceDictionary.MergedDictionaries>
 
            <Style TargetType="Label"></Style>
            <Style TargetType="ListView"></Style>
 
            <Style TargetType="DataGridRow" x:Key="CommonRow" BasedOn="{StaticResource DataGridRowStyle}">
                <Setter Property="Margin" Value="0"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="DataGridRow">
                            <SelectiveScrollingGrid>
                                <SelectiveScrollingGrid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </SelectiveScrollingGrid.ColumnDefinitions>
                                <SelectiveScrollingGrid.RowDefinitions>
                                    <RowDefinition Height="*"/>
                                    <RowDefinition Height="Auto"/>
                                </SelectiveScrollingGrid.RowDefinitions>
                                <Border Grid.ColumnSpan="2" x:Name="DGR_Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"/>
                                <DataGridCellsPresenter MinHeight="{TemplateBinding MinHeight}" VerticalContentAlignment="Center" Grid.Row="0" Grid.Column="1" ItemsPanel="{TemplateBinding ItemsPanel}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                                <DataGridDetailsPresenter Grid.Column="1" Grid.Row="1" SelectiveScrollingGrid.SelectiveScrollingOrientation="{Binding AreRowDetailsFrozen, ConverterParameter={x:Static SelectiveScrollingOrientation.Vertical}, Converter={x:Static DataGrid.RowDetailsScrollingConverter}, RelativeSource={RelativeSource AncestorType=DataGrid}}" Visibility="{TemplateBinding DetailsVisibility}"/>
                                <DataGridRowHeader Grid.Row="0" Grid.Column="0" SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Row}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
                            </SelectiveScrollingGrid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Background" Value="{StaticResource SecondaryImportant}"/>
                    </Trigger>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter Property="Background" Value="{StaticResource Important}"/>
                        <Setter Property="TextElement.Foreground" Value="#FFF"/>
                    </Trigger>
                    <!--<MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="IsSelected" Value="true"/>
                            <Condition Property="Selector.IsSelectionActive" Value="false"/>
                        </MultiTrigger.Conditions>
                        <Setter Property="Background" Value="{DynamicResource DarkDefaultBrush}"/>
                        <Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}"/>
                    </MultiTrigger>-->
                </Style.Triggers>
 
            </Style>
 
            <Style TargetType="DataGridColumnHeader" x:Key="CommonColumnHeader">
                <Setter Property="BorderBrush" Value="{Binding Path=HorizontalGridLinesBrush,RelativeSource={RelativeSource FindAncestor,AncestorType=DataGrid}}"/>
                <Setter Property="BorderThickness" Value="0,1,1,1"/>
 
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Column.DisplayIndex}" Value="0">
                        <Setter Property="BorderThickness" Value="1,1,1,1"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
 
            <Style TargetType="DataGridCell" x:Key="CommonCell" BasedOn="{StaticResource DataGridCellStyle}">
                <Setter Property="BorderBrush" Value="{Binding Path=HorizontalGridLinesBrush,RelativeSource={RelativeSource FindAncestor,AncestorType=DataGrid}}"/>
                <Setter Property="BorderThickness" Value="0,0,1,1"/>
                <Setter Property="Padding" Value="0"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="DataGridCell">
                            <Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Column.DisplayIndex}" Value="0">
                        <Setter Property="BorderThickness" Value="1,0,1,1"/>
                    </DataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding IsSelected,RelativeSource={RelativeSource Self}}" Value="true"/>
                            <Condition Binding="{Binding SelectionUnit,RelativeSource={RelativeSource FindAncestor,AncestorType=DataGrid}}" Value="Cell"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Foreground" Value="{StaticResource ImportantFont}"/>
                        <Setter Property="Background" Value="{StaticResource Important}"/>
                    </MultiDataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding IsSelected,RelativeSource={RelativeSource Self}}" Value="true"/>
                            <Condition Binding="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="False"/>
                            <Condition Binding="{Binding SelectionUnit,RelativeSource={RelativeSource FindAncestor,AncestorType=DataGrid}}" Value="CellOrRowHeader"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Foreground" Value="{StaticResource ImportantFont}"/>
                        <Setter Property="Background" Value="{StaticResource Important}"/>
                    </MultiDataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding IsSelected,RelativeSource={RelativeSource Self}}" Value="true"/>
                            <Condition Binding="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="True"/>
                            <Condition Binding="{Binding SelectionUnit,RelativeSource={RelativeSource FindAncestor,AncestorType=DataGrid}}" Value="CellOrRowHeader"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Foreground" Value="{StaticResource ImportantFont}"/>
                    </MultiDataTrigger>
                    <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                            <Condition Binding="{Binding IsSelected,RelativeSource={RelativeSource Self}}" Value="true"/>
                            <Condition Binding="{Binding SelectionUnit,RelativeSource={RelativeSource FindAncestor,AncestorType=DataGrid}}" Value="FullRow"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Foreground" Value="{StaticResource ImportantFont}"/>
                    </MultiDataTrigger>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="IsSelected" Value="true"/>
                            <Condition Property="Selector.IsSelectionActive" Value="false"/>
                        </MultiTrigger.Conditions>
                        <Setter Property="Foreground" Value="{StaticResource ImportantFont}"/>
                        <Setter Property="Background" Value="{StaticResource Important}"/>
                    </MultiTrigger>
                </Style.Triggers>
            </Style>
 
            <Style TargetType="DataGrid" BasedOn="{StaticResource DataGridBaseStyle}">
                <Setter Property="GridLinesVisibility" Value="None"/>
                <Setter Property="HorizontalGridLinesBrush" Value="Gray"/>
                <Setter Property="RowStyle" Value="{StaticResource CommonRow}"/>
                <Setter Property="CellStyle" Value="{StaticResource CommonCell}"/>
                <Setter Property="ColumnHeaderStyle" Value="{StaticResource CommonColumnHeader}"/>
                <Setter Property="hc:BorderElement.CornerRadius" Value="0" />
                <Setter Property="RowHeight" Value="30"/>
            </Style>
        </ResourceDictionary>
    </UserControl.Resources>
    
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="3*"/>
            <ColumnDefinition Width="2"/>
            <ColumnDefinition Width="7*"/>
        </Grid.ColumnDefinitions>
        <ListView ItemContainerStyle="{StaticResource a}" ItemsSource="{Binding Sequences}" BorderThickness="0"
                  dd:DragDrop.IsDragSource="True"
                  dd:DragDrop.IsDropTarget="True"
                  dd:DragDrop.ShowAlwaysDropTargetAdorner="True"
                  dd:DragDrop.UseDefaultDragAdorner="True"
                  SelectionChanged="ListView_SelectionChanged">
 
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ContentControl Content="{Binding Name}"/>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
 
        <GridSplitter Grid.Column="1" Background="LightGray" HorizontalAlignment="Center" Width="2" ResizeDirection="Columns"/>
 
        <Grid Grid.Column="2">
            <Grid.RowDefinitions>
                <RowDefinition Height="30"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Label Content="测试流程" VerticalContentAlignment="Center"/>
 
            <DataGrid x:Name="dataGrid" AutoGenerateColumns="False" 
                       
                      CanUserAddRows="False"
                      CanUserSortColumns="False"
                      FrozenColumnCount="1" Background="#FFF" Grid.Row="1" 
                      BorderThickness="0"
                      dd:DragDrop.IsDragSource="True"
                      dd:DragDrop.IsDropTarget="True"
                      dd:DragDrop.ShowAlwaysDropTargetAdorner="True"
                      dd:DragDrop.UseDefaultDragAdorner="True"
                    
                      dd:DragDrop.SelectDroppedItems="True"
                      dd:DragDrop.DropHandler="{Binding dropHandler}"
                      
                      ItemsSource="{Binding Steps}">
                <DataGrid.Columns>
                    <DataGridTextColumn IsReadOnly="True" Binding="{Binding Index}" Header="#"/>
 
                    <DataGridTextColumn Header="标题1" Binding="{Binding Name}"></DataGridTextColumn>
                    <DataGridTextColumn Header="标题2" Binding="{Binding Name}"></DataGridTextColumn>
                    <DataGridTextColumn Header="标题3" Binding="{Binding Name}"></DataGridTextColumn>
                    <DataGridTextColumn Header="标题4" Binding="{Binding Name}"></DataGridTextColumn>
 
                    <DataGridTemplateColumn x:Name="opt" Width="*" Header="操作">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <Button Style="{StaticResource LinkButton}" Margin="0,0,20,0">编辑</Button>
                                    <Button Style="{StaticResource LinkButton}">删除</Button>
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>
 
            <!--<ListView >
                <ListView.View>
                    <GridView>
                        
                    </GridView>
                </ListView.View>
            </ListView>-->
        </Grid>
 
    </Grid>
</UserControl>