alielie
2026-09-10 f3889f2d36c50cf99468594854def9b7ed069fb5
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
<UserControl x:Class="OpenTapEditor.VariableTree"
             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:sys="clr-namespace:System;assembly=mscorlib"
             xmlns:addIn="clr-namespace:OpenTap.Addin;assembly=OpenTap"
             d:DesignHeight="450" d:DesignWidth="800">
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/UILib;component/Themes/Generic.xaml"/>
            </ResourceDictionary.MergedDictionaries>
            <ObjectDataProvider x:Key="TypeEnum" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
                <ObjectDataProvider.MethodParameters>
                    <x:Type TypeName="addIn:TestVariableType"/>
                </ObjectDataProvider.MethodParameters>
            </ObjectDataProvider>
        </ResourceDictionary>
    </UserControl.Resources>
 
    <Grid>
        <ui:TreeListView Grid.Row="1" Grid.Column="0" 
                         ItemsSource="{Binding Datasource}" AlternationCount="2"
                         PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown"
                         ChildrenPath="Children"
                         ItemTemplate="{StaticResource DefaultTreeNodeItemTemplate}"
                         ItemSelectedColor="#c1dcf9"
                         ItemSelectedForeground="Black"
                         BorderColor="{StaticResource BorderBrush}"
                 x:Name="treeView">
            <ui:TreeListView.Columns>
                <GridViewColumn Header="{DynamicResource 名称}" Width="200" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Border Style="{StaticResource TreeCellBoard}">
                                <DockPanel>
                                    <ToggleButton x:Name="Expander" Style="{StaticResource SimpleToggleButton}" ClickMode="Press"/>
                                    <ui:EditBox Margin="5,0,0,0"
                                                PreSubmit="VariableNamePreSubmit"
                                                Tag="{Binding RelativeSource={RelativeSource AncestorType=ui:TreeListViewItem}}"
                                                Value="{Binding Title,Mode=TwoWay}">
                                        <ui:EditBox.CanEdit>
                                            <MultiBinding Converter="{x:Static local:MultiTestVariableConverter.Instance}" ConverterParameter="NameCanEdit">
                                                <Binding Path=""/>
                                                <Binding Path="" RelativeSource="{RelativeSource AncestorType=ui:TreeListViewItem}"/>
                                            </MultiBinding>
                                        </ui:EditBox.CanEdit>
                                    </ui:EditBox>
                                </DockPanel>
                            </Border>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
 
                <GridViewColumn Header="{DynamicResource 类型}" Width="100">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Border Style="{StaticResource TreeCellBoard}">
                                <DockPanel>
                                    <Button Tag="{Binding RelativeSource={RelativeSource AncestorType=ui:TreeListViewItem}}"                                            
                                            FontFamily="{StaticResource iconfont}"
                                            Style="{StaticResource SimpleBtn}"
                                            Height="Auto"
                                            VerticalContentAlignment="Center" Click="ChangeButton_Click" DockPanel.Dock="Right"
                                            Content="&#xee18;" >
                                        <Button.Visibility>
                                            <MultiBinding Converter="{x:Static local:MultiTestVariableConverter.Instance}" ConverterParameter="ChangeButton">
                                                <Binding Path=""/>
                                                <Binding Path="" RelativeSource="{RelativeSource AncestorType=ui:TreeListViewItem}"/>
                                            </MultiBinding>
                                        </Button.Visibility>
                                    </Button>
                                    <TextBlock Text="{Binding Mode=OneWay,Converter={x:Static local:TestVariableConverter.Instance},ConverterParameter='TypeName'}"/>
                                </DockPanel>
                            </Border>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
 
                <GridViewColumn Header="{DynamicResource 值}" Width="100" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Border Style="{StaticResource TreeCellBoard}">
                                <ui:EditBox Value="{Binding Value,Mode=TwoWay}" 
                                            FormatString="{Binding Converter={x:Static local:TestVariableConverter.Instance},ConverterParameter='StringFormat'}"
                                            EditType="{Binding Converter={x:Static local:TestVariableConverter.Instance},ConverterParameter='EditType'}"
                                            CanEdit="{Binding Mode=OneWay,Converter={x:Static local:TestVariableConverter.Instance},ConverterParameter='CanEdit'}"/>
                            </Border>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
 
            </ui:TreeListView.Columns>
 
            <!--<TreeView.ItemContainerStyle>
                <Style TargetType="TreeViewItem">
                    <EventSetter Event="PreviewMouseDoubleClick" 
             Handler="TreeViewItem_PreviewMouseDoubleClick"/>
                </Style>
            </TreeView.ItemContainerStyle>-->
        </ui:TreeListView>
    </Grid>
</UserControl>