From 8d344c1b64a4b88fa78a46c0825f5d71c557a815 Mon Sep 17 00:00:00 2001
From: chr <chrry550@163.com>
Date: 星期五, 01 三月 2024 15:31:14 +0800
Subject: [PATCH] 优化DataGridUI;完善拖拽;
---
UI/Test/SequnceList.xaml | 314 +++++++++++++++++++++++++++++++++++++--------------
1 files changed, 227 insertions(+), 87 deletions(-)
diff --git a/UI/Test/SequnceList.xaml b/UI/Test/SequnceList.xaml
index 54a58d6..38396cb 100644
--- a/UI/Test/SequnceList.xaml
+++ b/UI/Test/SequnceList.xaml
@@ -1,87 +1,227 @@
-锘�<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"
-
- 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>
- <Color x:Key="DarkPrimaryColor">#e17933</Color>
- <Color x:Key="PrimaryColor">#e17933</Color>
-
- </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">
-
- <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" FrozenColumnCount="1" Background="#FFF" Grid.Row="1"
- BorderThickness="0"
- ItemsSource="{Binding Steps}">
- <DataGrid.Columns>
- <DataGridTextColumn IsReadOnly="True" Width="80" CanUserResize="False" 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="120" CanUserResize="False" Header="鎿嶄綔">
- <DataGridTemplateColumn.CellTemplate>
- <DataTemplate>
- <StackPanel Orientation="Horizontal">
- <Button Style="{StaticResource LinkButton}" Margin="0,0,20,0">123</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>
+锘�<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">123</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>
--
Gitblit v1.9.1