﻿<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="/WPFProject;component/Style/colors.xaml"/>
                <ResourceDictionary Source="/WPFProject;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>
