chr
2026-04-05 fe750b791d5b517cc4e9bc8e99a9a75139a0cfba
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
<UserControl x:Class="OpenTapEditor.StepTree"
             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:OpenTapEditor"
             mc:Ignorable="d" 
             xmlns:ui="clr-namespace:UILib;assembly=UILib"
             xmlns:dd="urn:gong-wpf-dragdrop"
             x:Name="self"
             xmlns:sys="clr-namespace:System;assembly=mscorlib"
             d:DesignHeight="450" d:DesignWidth="800">
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/UILib;component/Themes/Generic.xaml"/>
            </ResourceDictionary.MergedDictionaries>
 
            <Style x:Key="gvh" TargetType="GridViewColumnHeader">
                <Setter Property="Background" Value="{DynamicResource VerBar}"/>
            </Style>
 
            <Style x:Key="CellBorder" TargetType="Border">
                <Setter Property="Padding" Value="2"/>
                <Setter Property="BorderBrush" Value="DimGray"/>
                <Setter Property="BorderThickness" Value="1,0,0,1"/>
                <Setter Property="Margin" Value="-6,0"/>
            </Style>
 
            <DataTemplate x:Key="gvht">
                <Border Padding="0">
                    <TextBlock Foreground="Black" Text="{Binding }"/>
                </Border>
            </DataTemplate>
        </ResourceDictionary>
    </UserControl.Resources>
    <Grid>
        <ui:TreeListView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Datasource}"
                         SelectedItemChanged="treeList_SelectedItemChanged"
                         dd:DragDrop.IsDragSource="True"
                         dd:DragDrop.IsDropTarget="True"
dd:DragDrop.DropTargetAdornerBrush="Red"
dd:DragDrop.DropHandler="{Binding DragHandler}"
                         PreviewMouseRightButtonDown="treeList_PreviewMouseRightButtonDown"
                         AlternationCount="2"
                 x:Name="treeList">
            <ui:TreeListView.Columns>
                <GridViewColumn Header="" Width="20"
                                        ui:TreeViewColumnWidthHelper.AutoWidth="Auto"
                                        HeaderTemplate="{StaticResource gvht}">
                    <GridViewColumn.HeaderContainerStyle>
                        <Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource gvh}">
                            <Setter Property="IsEnabled" Value="False"/>
                        </Style>
                    </GridViewColumn.HeaderContainerStyle>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <DockPanel>
                                <local:ErrorSpan DockPanel.Dock="Right" Source="{Binding }"/>
                                <TextBlock DockPanel.Dock="Right" Style="{StaticResource TreeTotalIndex}"/>
 
                                <ToggleButton HorizontalAlignment="Left" x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}"
IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ui:TreeListViewItem,AncestorLevel=1}}"
ClickMode="Press"/>
                                
                            </DockPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
 
                <GridViewColumn Header="名称" HeaderContainerStyle="{StaticResource gvh}" Width="200"
                                        HeaderTemplate="{StaticResource gvht}">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <DockPanel>
                                <ui:EditBox Value="{Binding Name,Mode=TwoWay}"/>
                            </DockPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
 
                <GridViewColumn Header="RunMode" HeaderContainerStyle="{StaticResource gvh}" Width="80"
                        HeaderTemplate="{StaticResource gvht}">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <DockPanel>
                                <CheckBox Margin="0,0,10,0" VerticalContentAlignment="Center" 
                                          IsChecked="{Binding Enabled,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
                            </DockPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
 
                <GridViewColumn Header="类型" HeaderContainerStyle="{StaticResource gvh}" Width="200" 
                                HeaderTemplate="{StaticResource gvht}">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding TypeName}"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
 
                <GridViewColumn Header="描述" HeaderContainerStyle="{StaticResource gvh}" Width="200" 
                                HeaderTemplate="{StaticResource gvht}">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <ui:EditBox Value="{Binding Description,Mode=TwoWay}"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
 
                <GridViewColumn Header="下限" HeaderContainerStyle="{StaticResource gvh}" Width="200" 
                HeaderTemplate="{StaticResource gvht}">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <ui:EditBox Value="{Binding LimitDown,Mode=TwoWay}"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </ui:TreeListView.Columns>
 
            <TreeView.ItemContainerStyle>
                <Style TargetType="TreeViewItem">
                    <Setter Property="Padding" Value="0"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Enabled}" Value="False">
                            <Setter Property="Foreground" Value="Gray"/>
                        </DataTrigger>
 
                        <DataTrigger Value="True">
                            <DataTrigger.Binding>
                                <MultiBinding Converter="{x:Static local:RunningIdConverter.Instance}">
                                    <Binding ElementName="self" Path="CurrentId"/>
                                    <Binding Path="Id"/>
                                </MultiBinding>
                            </DataTrigger.Binding>
                            <Setter Property="Background" Value="LightGreen"/>
                        </DataTrigger>
 
                        <Trigger Property="ui:TreeListViewItem.IsSelected" Value="True">
                            <Setter Property="Background" Value="#abc9FF"/>
                        </Trigger>
 
                    </Style.Triggers>
                </Style>
            </TreeView.ItemContainerStyle>
 
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding ChildTestSteps}">
                    <Grid x:Name="rp">
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <Border BorderThickness="0" x:Name="border">
                            <GridViewRowPresenter Grid.Row="0" 
                                              Columns="{Binding Columns, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ui:TreeListView,AncestorLevel=1}}" 
                  Content="{Binding }"/>
                        </Border>
                    </Grid>
 
                    <DataTemplate.Triggers>
                        
                    </DataTemplate.Triggers>
 
                    <!--<Grid.Style>
                            <Style TargetType="Grid">
                                <Style.Triggers>
                                    <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                                        <Setter Property="Background" Value="LightGreen"/>
                                    </Trigger>
                                </Style.Triggers>
                            </Style>
                        </Grid.Style>-->
 
                    <!--<HierarchicalDataTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="rp" Property="Background" Value="#e5f3fb"/>
                        </Trigger>
                        <Trigger Property="ListViewItem.IsSelected" Value="True">
                            <Setter TargetName="rp" Property="Background" Value="#cbe8f6"/>
                        </Trigger>
                    </HierarchicalDataTemplate.Triggers>-->
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </ui:TreeListView>
    </Grid>
</UserControl>