.gitignore
@@ -16,6 +16,7 @@ bld/ [Bb]in/ [Oo]bj/ **/packages/ # Roslyn cache directories *.ide/ Models/Step.cs
File was deleted VisionBuilder.Core/Api/IProgram.cs
New file @@ -0,0 +1,7 @@ namespace VisionBuilder.Core.Api { public interface IProgram { void RunProgram(); } } VisionBuilder.Core/Api/ISequnce.cs
New file @@ -0,0 +1,19 @@ using System.Collections.Generic; namespace VisionBuilder.Core.Api { public interface ISequence { void SetSteps(List<IStep> steps); IList<IStep> GetSteps(); ISequence AddStep(params IStep[] steps); void SetPrograme(IProgram program); IProgram GetProgram(); void RunSequnce(); } } VisionBuilder.Core/Api/IStep.cs
New file @@ -0,0 +1,7 @@ namespace VisionBuilder.Core.Api { public interface IStep { void RunStep(); } } VisionBuilder.Core/Api/IStepRunner.cs
New file @@ -0,0 +1,10 @@ using System.Collections.Generic; using VisionBuilder.Core.Entity; namespace VisionBuilder.Core.Api { public interface IStepRunner { void RunStep(Dictionary<string, Param> param); } } VisionBuilder.Core/Entity/Param.cs
New file @@ -0,0 +1,22 @@ namespace VisionBuilder.Core.Entity { public class Param { private string _Name; public string Name { get { return _Name; } set { _Name = value; } } private string _Value; public string Value { get { return _Value; } set { _Value = value; } } } } VisionBuilder.Core/Properties/AssemblyInfo.cs
New file @@ -0,0 +1,36 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // 有关程序集的一般信息由以下 // 控制。更改这些特性值可修改 // 与程序集关联的信息。 [assembly: AssemblyTitle("VisionBuilder.Core")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("HP Inc.")] [assembly: AssemblyProduct("VisionBuilder.Core")] [assembly: AssemblyCopyright("Copyright © HP Inc. 2024")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // 将 ComVisible 设置为 false 会使此程序集中的类型 //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 //请将此类型的 ComVisible 特性设置为 true。 [assembly: ComVisible(false)] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("3e3bf44a-0b69-45c5-9512-528cb48a7106")] // 程序集的版本信息由下列四个值组成: // // 主版本 // 次版本 // 生成号 // 修订号 // //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] VisionBuilder.Core/VisionBuilder.Core.csproj
New file @@ -0,0 +1,52 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{3E3BF44A-0B69-45C5-9512-528CB48A7106}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>VisionBuilder.Core</RootNamespace> <AssemblyName>VisionBuilder.Core</AssemblyName> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <Deterministic>true</Deterministic> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> <Reference Include="System.Net.Http" /> <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="Api\IProgram.cs" /> <Compile Include="Api\ISequnce.cs" /> <Compile Include="Api\IStep.cs" /> <Compile Include="Api\IStepRunner.cs" /> <Compile Include="Entity\Param.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project> VisionBuilder.Engine/Properties/AssemblyInfo.cs
New file @@ -0,0 +1,36 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // 有关程序集的一般信息由以下 // 控制。更改这些特性值可修改 // 与程序集关联的信息。 [assembly: AssemblyTitle("VisionBuilder.Engine")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("HP Inc.")] [assembly: AssemblyProduct("VisionBuilder.Engine")] [assembly: AssemblyCopyright("Copyright © HP Inc. 2024")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // 将 ComVisible 设置为 false 会使此程序集中的类型 //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 //请将此类型的 ComVisible 特性设置为 true。 [assembly: ComVisible(false)] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("8e5e8a68-0b9d-4a6a-b325-730c64603fdf")] // 程序集的版本信息由下列四个值组成: // // 主版本 // 次版本 // 生成号 // 修订号 // //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] VisionBuilder.Engine/Runner.cs
New file @@ -0,0 +1,12 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace VisionBuilder.Engine { public class Runner { } } VisionBuilder.Engine/VisionBuilder.Engine.csproj
New file @@ -0,0 +1,54 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{8E5E8A68-0B9D-4A6A-B325-730C64603FDF}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>VisionBuilder.Engine</RootNamespace> <AssemblyName>VisionBuilder.Engine</AssemblyName> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <Deterministic>true</Deterministic> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> <Reference Include="System.Net.Http" /> <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="Runner.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\VisionBuilder.Core\VisionBuilder.Core.csproj"> <Project>{3e3bf44a-0b69-45c5-9512-528cb48a7106}</Project> <Name>VisionBuilder.Core</Name> </ProjectReference> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project> VisionBuilder.Test/PluginOne.cs
New file @@ -0,0 +1,14 @@ using System.Collections.Generic; using VisionBuilder.Core.Api; using VisionBuilder.Core.Entity; namespace VisionBuilder.Test { public class PluginOne : IStepRunner { public void RunStep(Dictionary<string, Param> param) { param["yoho"] = new Param { Name = "1", Value = "2" }; } } } VisionBuilder.Test/Properties/AssemblyInfo.cs
New file @@ -0,0 +1,36 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // 有关程序集的一般信息由以下 // 控制。更改这些特性值可修改 // 与程序集关联的信息。 [assembly: AssemblyTitle("VisionBuilder.Test")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("HP Inc.")] [assembly: AssemblyProduct("VisionBuilder.Test")] [assembly: AssemblyCopyright("Copyright © HP Inc. 2024")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // 将 ComVisible 设置为 false 会使此程序集中的类型 //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 //请将此类型的 ComVisible 特性设置为 true。 [assembly: ComVisible(false)] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("6e1cc97a-b3cb-4e9f-94e0-f264de0d8298")] // 程序集的版本信息由下列四个值组成: // // 主版本 // 次版本 // 生成号 // 修订号 // //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] VisionBuilder.Test/VisionBuilder.Test.csproj
New file @@ -0,0 +1,54 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{6E1CC97A-B3CB-4E9F-94E0-F264DE0D8298}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>VisionBuilder.Test</RootNamespace> <AssemblyName>VisionBuilder.Test</AssemblyName> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <Deterministic>true</Deterministic> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" /> <Reference Include="System.Net.Http" /> <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="PluginOne.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\VisionBuilder.Core\VisionBuilder.Core.csproj"> <Project>{3e3bf44a-0b69-45c5-9512-528cb48a7106}</Project> <Name>VisionBuilder.Core</Name> </ProjectReference> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project> WPFProject.sln
File was deleted WPFProject/App.config
WPFProject/App.xaml
WPFProject/App.xaml.cs
File was renamed from App.xaml.cs @@ -13,15 +13,15 @@ /// </summary> public partial class App : Application { public void test() public void test() { } private void Application_Startup(object sender, StartupEventArgs e) { MainWindow window = new MainWindow(); window.Show(); } } private void Application_Startup(object sender, StartupEventArgs e) { MainWindow window = new MainWindow(); window.Show(); } } } WPFProject/Controls/DpPlugin.cs
WPFProject/Controls/IconTabItem.cs
File was renamed from Controls/IconTabItem.cs @@ -1,70 +1,70 @@ using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; namespace WPFProject.Controls { public class IconTabItem : TabItem, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } public IconTabItem() : base() { Visibility = Visibility.Collapsed; } private bool _isFont; public bool IsFont { get => _isFont; set => _isFont = value; } private Window _Body; public Window Body { get => _Body; set => _Body = value; } public BitmapImage Icon { get { return (BitmapImage)GetValue(IconProperty); } set { SetValue(IconProperty, value); } } public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(BitmapImage), typeof(IconTabItem), new PropertyMetadata( new BitmapImage(new System.Uri("pack://application:,,,/Resources/Icon/xinzeng_1.png")))); // 单Header的字体大小 public double HeaderFontSize { get { return (double)GetValue(HeaderFontSizeProperty); } set { SetValue(HeaderFontSizeProperty, value); } } // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... public static readonly DependencyProperty HeaderFontSizeProperty = DependencyProperty.Register("HeaderFontSize", typeof(double), typeof(IconTabItem), new PropertyMetadata(10.0)); } } using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Imaging; namespace WPFProject.Controls { public class IconTabItem : TabItem, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } public IconTabItem() : base() { Visibility = Visibility.Collapsed; } private bool _isFont; public bool IsFont { get => _isFont; set => _isFont = value; } private Window _Body; public Window Body { get => _Body; set => _Body = value; } public BitmapImage Icon { get { return (BitmapImage)GetValue(IconProperty); } set { SetValue(IconProperty, value); } } public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(BitmapImage), typeof(IconTabItem), new PropertyMetadata( new BitmapImage(new System.Uri("pack://application:,,,/Resources/Icon/xinzeng_1.png")))); // 单Header的字体大小 public double HeaderFontSize { get { return (double)GetValue(HeaderFontSizeProperty); } set { SetValue(HeaderFontSizeProperty, value); } } // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... public static readonly DependencyProperty HeaderFontSizeProperty = DependencyProperty.Register("HeaderFontSize", typeof(double), typeof(IconTabItem), new PropertyMetadata(10.0)); } } WPFProject/Controls/InnerWindow.xaml
WPFProject/Controls/InnerWindow.xaml.cs
File was renamed from Controls/InnerWindow.xaml.cs @@ -20,7 +20,7 @@ /// InnerWindow.xaml 的交互逻辑 /// </summary> public partial class InnerWindow : UserControl, INotifyPropertyChanged { { #region INotifyPropertyChanged public virtual event PropertyChangedEventHandler PropertyChanged; @@ -36,45 +36,45 @@ { RaisePropertyChanged(propertyName); } } } #endregion #region 属性 #region Common public DragType DragType { get; set; } = DragType.Canvas; public CanvasPosition canvasPosition; private Canvas canvas; public WindowState WindowState { get; set; } = WindowState.Normal; public AdornerDecorator ResizeAdornerDecorator { get => VisualTreeHelper.GetChild(this, 0) as AdornerDecorator; } public AdornerDecorator ResizeAdornerDecorator { get => VisualTreeHelper.GetChild(this, 0) as AdornerDecorator; } private string _Title; public string Title { get { return _Title; } set => RaiseAndSetIfChanged(ref _Title, value); } } public int Zindex { get get { return Canvas.GetZIndex(this); } set { Canvas.SetZIndex(this, value); } } #endregion } } #endregion #region 事件 public event EventHandler MinEvent; public event EventHandler MaxEvent; public event EventHandler CloseEvent; public event EventHandler ZIndexEvent; #endregion public event EventHandler ZIndexEvent; #endregion #region DependencyProperty public Brush HeaderBackground { @@ -94,11 +94,11 @@ public static readonly DependencyProperty HeaderFontColorProperty = DependencyProperty.Register("HeaderFontColor", typeof(Brush), typeof(ProgramList), new PropertyMetadata(new SolidColorBrush(Color.FromRgb(255, 255, 225)))); #endregion #endregion new PropertyMetadata(new SolidColorBrush(Color.FromRgb(255, 255, 225)))); #endregion #endregion public InnerWindow() : this(null) { @@ -131,8 +131,8 @@ }; } Loaded -= InnerWindow_Loaded; } } #region 拖拽移动相关 private void DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e) { @@ -179,7 +179,7 @@ { canvasPosition.Top = Canvas.GetTop(this); canvasPosition.Left = Canvas.GetLeft(this); } } #endregion /// <summary> @@ -205,22 +205,22 @@ Canvas.SetLeft(this, canvasPosition == null ? 0 : canvasPosition.Left); Canvas.SetTop(this, canvasPosition == null ? 0 : canvasPosition.Top); canvas.SizeChanged += Canvas_SizeChanged; } private void Canvas_SizeChanged(object sender, SizeChangedEventArgs e) { Size newSize = e.NewSize; Size previousSize = e.PreviousSize; double xRate = newSize.Width / previousSize.Width; double yRate = newSize.Height / previousSize.Height; Canvas.SetLeft(this, Canvas.GetLeft(this) * xRate); Canvas.SetTop(this, Canvas.GetTop(this) * yRate); this.Width = this.Width * xRate; this.Height = this.Height * yRate; } } private void Canvas_SizeChanged(object sender, SizeChangedEventArgs e) { Size newSize = e.NewSize; Size previousSize = e.PreviousSize; double xRate = newSize.Width / previousSize.Width; double yRate = newSize.Height / previousSize.Height; Canvas.SetLeft(this, Canvas.GetLeft(this) * xRate); Canvas.SetTop(this, Canvas.GetTop(this) * yRate); this.Width = this.Width * xRate; this.Height = this.Height * yRate; } private void Min_Click(object sender, RoutedEventArgs e) { MinEvent?.Invoke(this, null); @@ -244,12 +244,12 @@ private void Grid_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { this.Focus(); } private void UserControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { } } private void UserControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { } } public enum DragType WPFProject/Controls/MenuTabControl.xaml
WPFProject/Controls/MenuTabControl.xaml.cs
WPFProject/Controls/MinInnerWindow.xaml
WPFProject/Controls/MinInnerWindow.xaml.cs
WPFProject/Events/TabChange.cs
WPFProject/Forms/Form1.Designer.cs
WPFProject/Forms/Form1.cs
WPFProject/Forms/Form1.resx
WPFProject/MainWindow.xaml
WPFProject/MainWindow.xaml.cs
WPFProject/Models/CanvasPosition.cs
WPFProject/Models/FuncModel.cs
File was renamed from Models/FuncModel.cs @@ -1,24 +1,24 @@ using System.Collections.ObjectModel; namespace WPFProject.Models { public class FuncModel : NotifyBase { private string _Name; public string Name { get { return _Name; } set => RaiseAndSetIfChanged(ref _Name, value); } private ObservableCollection<FuncModel> _Children; public ObservableCollection<FuncModel> Children { get { return _Children; } set => RaiseAndSetIfChanged(ref _Children, value); } } } using System.Collections.ObjectModel; namespace WPFProject.Models { public class FuncModel : NotifyBase { private string _Name; public string Name { get { return _Name; } set => RaiseAndSetIfChanged(ref _Name, value); } private ObservableCollection<FuncModel> _Children; public ObservableCollection<FuncModel> Children { get { return _Children; } set => RaiseAndSetIfChanged(ref _Children, value); } } } WPFProject/Models/NotifyBase.cs
File was renamed from Models/NotifyBase.cs @@ -1,31 +1,31 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace WPFProject.Models { public class NotifyBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace WPFProject.Models { public class NotifyBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } } } WPFProject/Models/Program.cs
File was renamed from Models/Program.cs @@ -1,85 +1,83 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; using VisionBuilder.Core.Entity; namespace WPFProject.Models { public class Program : NotifyBase { /// <summary> /// 程序名 /// </summary> private string _Name; public string Name { get { return _Name; } set => RaiseAndSetIfChanged(ref _Name, value); } /// <summary> /// 序列集合 /// </summary> private ObservableCollection<Sequence> _Sequences = new ObservableCollection<Sequence>(); public ObservableCollection<Sequence> Sequences { get { return _Sequences; } set => RaiseAndSetIfChanged(ref _Sequences, value); } /// <summary> /// 程序所需参数 /// </summary> private ObservableCollection<Variable> _Variables; public ObservableCollection<Variable> Variables { get { return _Variables; } set => RaiseAndSetIfChanged(ref _Variables, value); } /// <summary> /// 初始参数参数 /// </summary> private Dictionary<string, Variable> _InitVars; [XmlIgnore] public Dictionary<string, Variable> InitVars { get { return _InitVars; } set { _InitVars = value; } } /// <summary> /// 计算临时参数 /// </summary> private Dictionary<string, Param> _TempVars; [XmlIgnore] public Dictionary<string, Param> TempVars { get { return _TempVars; } set { _TempVars = value; } } public Program AddSequnce(params Sequence[] sequences) { foreach (Sequence sequence in sequences) { if (sequence == null) continue; sequence.Program = this; Sequences.Add(sequence); } return this; } public void Run() { foreach (Sequence sequence in Sequences) { sequence.Run(); } } } } using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Xml.Serialization; using VisionBuilder.Core.Api; using VisionBuilder.Core.Entity; namespace WPFProject.Models { public class Program : NotifyBase, IProgram { /// <summary> /// 程序名 /// </summary> private string _Name; public string Name { get { return _Name; } set => RaiseAndSetIfChanged(ref _Name, value); } /// <summary> /// 序列集合 /// </summary> private ObservableCollection<Sequence> _Sequences = new ObservableCollection<Sequence>(); public ObservableCollection<Sequence> Sequences { get { return _Sequences; } set => RaiseAndSetIfChanged(ref _Sequences, value); } /// <summary> /// 程序所需参数 /// </summary> private ObservableCollection<Variable> _Variables; public ObservableCollection<Variable> Variables { get { return _Variables; } set => RaiseAndSetIfChanged(ref _Variables, value); } /// <summary> /// 初始参数参数 /// </summary> private Dictionary<string, Variable> _InitVars; [XmlIgnore] public Dictionary<string, Variable> InitVars { get { return _InitVars; } set { _InitVars = value; } } /// <summary> /// 计算临时参数 /// </summary> private Dictionary<string, Param> _TempVars = new Dictionary<string, Param>(); [XmlIgnore] public Dictionary<string, Param> TempVars { get { return _TempVars; } set { _TempVars = value; } } public Program AddSequnce(params Sequence[] sequences) { foreach (Sequence sequence in sequences) { if (sequence == null) continue; sequence.Program = this; Sequences.Add(sequence); } return this; } public void RunProgram() { foreach (Sequence sequence in Sequences) { sequence.RunSequnce(); } } } } WPFProject/Models/Sequence.cs
File was renamed from Models/Sequence.cs @@ -1,5 +1,7 @@ using System.Collections.ObjectModel; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Xml.Serialization; using VisionBuilder.Core.Api; namespace WPFProject.Models { @@ -11,38 +13,41 @@ { get { return _Name; } set => RaiseAndSetIfChanged(ref _Name, value); } } [XmlIgnore] public Program Program { get; set; } private ObservableCollection<Step> _Steps = new ObservableCollection<Step>() { new Step{ Name = "000"},new Step{ Name="111"} }; private ObservableCollection<Step> _Steps = new ObservableCollection<Step>(); public ObservableCollection<Step> Steps { get { return _Steps; } set => RaiseAndSetIfChanged(ref _Steps, value); } public Sequence AddStep(params Step[] steps) { foreach (Step step in steps) public Sequence AddStep(params Step[] steps) { foreach (Step step in steps) { if (step == null) continue; step.Program = Program; step.Sequence = this; Steps.Add(step); } return this; } public void Run() { foreach (Step step in Steps) { step.Run(); public void RunSequnce() { foreach (Step step in Steps) { step.RunStep(); } } public Sequence() { AddStep(new Step { Name = "000" }, new Step { Name = "111" }); } } } WPFProject/Models/Step.cs
New file @@ -0,0 +1,75 @@ using System; using System.Collections.Generic; using System.Reflection; using System.Xml.Serialization; using VisionBuilder.Core.Api; namespace WPFProject.Models { public class Step : NotifyBase { private static readonly Type InterfaceType = typeof(IStepRunner); private static readonly Dictionary<string, Assembly> Cache = new Dictionary<string, Assembly>(); #region 字段 [XmlIgnore] public Program Program { get; set; } [XmlIgnore] public Sequence Sequence { get; set; } private int _Index; public int Index { get { return _Index; } set => RaiseAndSetIfChanged(ref _Index, value); } private string _Name; public string Name { get { return _Name; } set => RaiseAndSetIfChanged(ref _Name, value); } private string _DllPath = "C:/Users/cheng/source/repos/WPFProject/VisionBuilder.Test/bin/Debug/VisionBuilder.Test.dll"; public string DllPath { get { return _DllPath; } set => RaiseAndSetIfChanged(ref _DllPath, value); } private string _ClassName = "VisionBuilder.Test.PluginOne"; public string ClassName { get { return _ClassName; } set => RaiseAndSetIfChanged(ref _ClassName, value); } private string _MethodName; public string MethodName { get { return _MethodName; } set => RaiseAndSetIfChanged(ref _MethodName, value); } private string _Description; public string Description { get { return _Description; } set => RaiseAndSetIfChanged(ref _Description, value); } #endregion public void RunStep() { Assembly assembly = Assembly.LoadFrom(DllPath); Type type = assembly.GetType(ClassName); if (type != null && InterfaceType.IsAssignableFrom(type)) { IStepRunner stepRunner = (IStepRunner)assembly.CreateInstance(ClassName); stepRunner.RunStep(Sequence.Program.TempVars); } } } } WPFProject/Models/Variable.cs
File was renamed from Models/Variable.cs @@ -1,61 +1,61 @@ using System; using System.Collections.Generic; using System.Linq; using System.Security.Policy; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; namespace WPFProject.Models { public class Variable : NotifyBase { /// <summary> /// 参数名 /// </summary> private string _Name; public string Name { get { return _Name; } set => RaiseAndSetIfChanged(ref _Name, value); } /// <summary> /// 参数类型 /// </summary> private string _TypeName; public string TypeName { get { return _TypeName; } set { RaiseAndSetIfChanged(ref _TypeName, value); Type = value == null ? null : Type.GetType(value); } } [XmlIgnore] public Type Type { get; private set; } /// <summary> /// 值字符 /// </summary> private string _ValueStr; public string ValueStr { get { return _ValueStr; } set => RaiseAndSetIfChanged(ref _ValueStr, value); } /// <summary> /// 参数值 /// </summary> private object _Value; public object Value { get { return _Value; } set { _Value = value; } } } } using System; using System.Collections.Generic; using System.Linq; using System.Security.Policy; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; namespace WPFProject.Models { public class Variable : NotifyBase { /// <summary> /// 参数名 /// </summary> private string _Name; public string Name { get { return _Name; } set => RaiseAndSetIfChanged(ref _Name, value); } /// <summary> /// 参数类型 /// </summary> private string _TypeName; public string TypeName { get { return _TypeName; } set { RaiseAndSetIfChanged(ref _TypeName, value); Type = value == null ? null : Type.GetType(value); } } [XmlIgnore] public Type Type { get; private set; } /// <summary> /// 值字符 /// </summary> private string _ValueStr; public string ValueStr { get { return _ValueStr; } set => RaiseAndSetIfChanged(ref _ValueStr, value); } /// <summary> /// 参数值 /// </summary> private object _Value; public object Value { get { return _Value; } set { _Value = value; } } } } WPFProject/Properties/AssemblyInfo.cs
WPFProject/Properties/Resources.Designer.cs
WPFProject/Properties/Resources.resx
WPFProject/Properties/Settings.Designer.cs
WPFProject/Properties/Settings.settings
WPFProject/Resources/Font/Font.xaml
WPFProject/Resources/Font/iconfont.ttfBinary files differ
WPFProject/Resources/Icon/xinzeng_1.pngWPFProject/Style/Colors.xaml
WPFProject/Style/CommonTree.xaml
File was renamed from Style/CommonTree.xaml @@ -1,51 +1,51 @@ <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:hc="https://handyorg.github.io/handycontrol" > <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/> <ResourceDictionary Source="/WPFProject;component/Style/colors.xaml"/> </ResourceDictionary.MergedDictionaries> <Style TargetType="TreeViewItem" BasedOn="{StaticResource TreeViewItemBaseStyle}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TreeViewItem"> <Grid> <Grid.RowDefinitions> <RowDefinition MinHeight="{TemplateBinding MinHeight}"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Border x:Name="Bd" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true"> <DockPanel LastChildFill="True" Margin="{Binding Converter={StaticResource TreeViewItemMarginConverter}, RelativeSource={RelativeSource TemplatedParent}}"> <ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ExpandCollapseToggleStyle}"/> <ContentPresenter VerticalAlignment="Center" x:Name="PART_Header" ContentSource="Header" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </DockPanel> </Border> <ItemsPresenter Grid.Row="1" x:Name="ItemsHost" /> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="true" SourceName="Bd"> <Setter Property="Background" TargetName="Bd" Value="{StaticResource SecondaryImportant}"/> </Trigger> <Trigger Property="IsExpanded" Value="false"> <Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/> </Trigger> <Trigger Property="HasItems" Value="false"> <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/> </Trigger> <Trigger Property="IsSelected" Value="true"> <Setter Property="Background" TargetName="Bd" Value="{StaticResource Important}"/> <Setter Property="Foreground" Value="{DynamicResource TextIconBrush}"/> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Opacity" Value=".4" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:hc="https://handyorg.github.io/handycontrol" > <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/> <ResourceDictionary Source="/WPFProject;component/Style/colors.xaml"/> </ResourceDictionary.MergedDictionaries> <Style TargetType="TreeViewItem" BasedOn="{StaticResource TreeViewItemBaseStyle}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TreeViewItem"> <Grid> <Grid.RowDefinitions> <RowDefinition MinHeight="{TemplateBinding MinHeight}"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Border x:Name="Bd" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true"> <DockPanel LastChildFill="True" Margin="{Binding Converter={StaticResource TreeViewItemMarginConverter}, RelativeSource={RelativeSource TemplatedParent}}"> <ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ExpandCollapseToggleStyle}"/> <ContentPresenter VerticalAlignment="Center" x:Name="PART_Header" ContentSource="Header" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </DockPanel> </Border> <ItemsPresenter Grid.Row="1" x:Name="ItemsHost" /> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="true" SourceName="Bd"> <Setter Property="Background" TargetName="Bd" Value="{StaticResource SecondaryImportant}"/> </Trigger> <Trigger Property="IsExpanded" Value="false"> <Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/> </Trigger> <Trigger Property="HasItems" Value="false"> <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/> </Trigger> <Trigger Property="IsSelected" Value="true"> <Setter Property="Background" TargetName="Bd" Value="{StaticResource Important}"/> <Setter Property="Foreground" Value="{DynamicResource TextIconBrush}"/> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Opacity" Value=".4" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary> WPFProject/Style/ListViewStyle.xaml
WPFProject/Style/MainTab.xaml
File was renamed from Style/MainTab.xaml @@ -19,19 +19,19 @@ Foreground="{TemplateBinding Foreground}" /> </Border> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=TabStripPlacement}" Value="Left"> <Setter Property="BorderThickness" TargetName="templateRoot" Value="0,0,3,0"/> <Setter Property="Padding" TargetName="templateRoot" Value="3,3,0,3"/> <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=TabStripPlacement}" Value="Left"> <Setter Property="BorderThickness" TargetName="templateRoot" Value="0,0,3,0"/> <Setter Property="Padding" TargetName="templateRoot" Value="3,3,0,3"/> </DataTrigger> <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=TabStripPlacement}" Value="Right"> <Setter Property="BorderThickness" TargetName="templateRoot" Value="3,0,0,0"/> <Setter Property="Padding" TargetName="templateRoot" Value="0,3,3,3"/> <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=TabStripPlacement}" Value="Right"> <Setter Property="BorderThickness" TargetName="templateRoot" Value="3,0,0,0"/> <Setter Property="Padding" TargetName="templateRoot" Value="0,3,3,3"/> </DataTrigger> <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=TabStripPlacement}" Value="Right"> <Setter Property="BorderThickness" TargetName="templateRoot" Value="0,3,0,0"/> <Setter Property="Padding" TargetName="templateRoot" Value="3,0,3,3"/> <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Path=TabStripPlacement}" Value="Right"> <Setter Property="BorderThickness" TargetName="templateRoot" Value="0,3,0,0"/> <Setter Property="Padding" TargetName="templateRoot" Value="3,0,3,3"/> </DataTrigger> <MultiDataTrigger> WPFProject/Style/WindowResources.xaml
WPFProject/UI/BottomBar.xaml
WPFProject/UI/BottomBar.xaml.cs
WPFProject/UI/StepSetting.xaml
File was renamed from UI/StepSetting.xaml @@ -12,7 +12,7 @@ <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/colors.xaml"/> <ResourceDictionary Source="/WPFProject;component/Style/MainTab.xaml"/> </ResourceDictionary.MergedDictionaries> WPFProject/UI/StepSetting.xaml.cs
WPFProject/UI/Test/FunctionSetting.xaml
File was renamed from UI/Test/FunctionSetting.xaml @@ -1,54 +1,54 @@ <UserControl x:Class="WPFProject.UI.Test.FunctionSetting" 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:dd="urn:gong-wpf-dragdrop" xmlns:m="clr-namespace:WPFProject.Models" xmlns:util="clr-namespace:WPFProject.Utils" xmlns:hc="https://handyorg.github.io/handycontrol" mc:Ignorable="d" 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/CommonTree.xaml"/> <ResourceDictionary Source="/WPFProject;component/Style/MainTab.xaml"/> </ResourceDictionary.MergedDictionaries> <Style TargetType="Label"/> <Style TargetType="TabControl"/> <Style TargetType="TreeView"> </Style> </ResourceDictionary> </UserControl.Resources> <Grid> <TabControl Style="{StaticResource ControlStyle}"> <TabItem Header="函数列表"> <StackPanel> <hc:SearchBar hc:InfoElement.Placeholder="输入文本查询" Style="{StaticResource SearchBarPlus}" Margin="10,5,10,5"/> <TreeView BorderThickness="0" ItemsSource="{Binding FuncModels}" dd:DragDrop.IsDragSource="True" dd:DragDrop.ShowAlwaysDropTargetAdorner="True" dd:DragDrop.UseDefaultDragAdorner="True" dd:DragDrop.DragHandler="{Binding dragHandler}" > <TreeView.ItemTemplate> <HierarchicalDataTemplate DataType="{x:Type m:FuncModel}" ItemsSource="{Binding Path=Children}"> <ContentControl Content="{Binding Name}"/> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> </StackPanel> </TabItem> <TabItem Header="变量列表"> </TabItem> </TabControl> </Grid> </UserControl> <UserControl x:Class="WPFProject.UI.Test.FunctionSetting" 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:dd="urn:gong-wpf-dragdrop" xmlns:m="clr-namespace:WPFProject.Models" xmlns:util="clr-namespace:WPFProject.Utils" xmlns:hc="https://handyorg.github.io/handycontrol" mc:Ignorable="d" 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/CommonTree.xaml"/> <ResourceDictionary Source="/WPFProject;component/Style/MainTab.xaml"/> </ResourceDictionary.MergedDictionaries> <Style TargetType="Label"/> <Style TargetType="TabControl"/> <Style TargetType="TreeView"> </Style> </ResourceDictionary> </UserControl.Resources> <Grid> <TabControl Style="{StaticResource ControlStyle}"> <TabItem Header="函数列表"> <StackPanel> <hc:SearchBar hc:InfoElement.Placeholder="输入文本查询" Style="{StaticResource SearchBarPlus}" Margin="10,5,10,5"/> <TreeView BorderThickness="0" ItemsSource="{Binding FuncModels}" dd:DragDrop.IsDragSource="True" dd:DragDrop.ShowAlwaysDropTargetAdorner="True" dd:DragDrop.UseDefaultDragAdorner="True" dd:DragDrop.DragHandler="{Binding dragHandler}" > <TreeView.ItemTemplate> <HierarchicalDataTemplate DataType="{x:Type m:FuncModel}" ItemsSource="{Binding Path=Children}"> <ContentControl Content="{Binding Name}"/> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> </StackPanel> </TabItem> <TabItem Header="变量列表"> </TabItem> </TabControl> </Grid> </UserControl> WPFProject/UI/Test/FunctionSetting.xaml.cs
File was renamed from UI/Test/FunctionSetting.xaml.cs @@ -24,22 +24,22 @@ /// <summary> /// FunctionSetting.xaml 的交互逻辑 /// </summary> public partial class FunctionSetting : UserControl, INotifyPropertyChanged { public virtual event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } public partial class FunctionSetting : UserControl, INotifyPropertyChanged { public virtual event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } public FunctionSetting() @@ -50,29 +50,29 @@ public DdDragHandler dragHandler { get; set; } = new DdDragHandler(); private ObservableCollection<FuncModel> _FuncModels = new ObservableCollection<FuncModel>() { new FuncModel(){ Name = "111", Children = new ObservableCollection<FuncModel>(){ new FuncModel(){ Name = "1123"}, new FuncModel(){ Name = "1223"}, } }, new FuncModel() { Name = "222", Children = new ObservableCollection<FuncModel>(){ new FuncModel(){ Name = "2123"}, new FuncModel(){ Name = "2223"}, } } }; public ObservableCollection<FuncModel> FuncModels { get { return _FuncModels; } set => RaiseAndSetIfChanged(ref _FuncModels, value); } private ObservableCollection<FuncModel> _FuncModels = new ObservableCollection<FuncModel>() { new FuncModel(){ Name = "111", Children = new ObservableCollection<FuncModel>(){ new FuncModel(){ Name = "1123"}, new FuncModel(){ Name = "1223"}, } }, new FuncModel() { Name = "222", Children = new ObservableCollection<FuncModel>(){ new FuncModel(){ Name = "2123"}, new FuncModel(){ Name = "2223"}, } } }; public ObservableCollection<FuncModel> FuncModels { get { return _FuncModels; } set => RaiseAndSetIfChanged(ref _FuncModels, value); } } } WPFProject/UI/Test/ProgramList.xaml
File was renamed from UI/Test/ProgramList.xaml @@ -1,36 +1,36 @@ <UserControl x:Class="WPFProject.UI.Test.ProgramList" 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:vm="clr-namespace:WPFProject.ViewModels" xmlns:dd="urn:gong-wpf-dragdrop" mc:Ignorable="d" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Background="#FFF" > <UserControl.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/WPFProject;component/Style/ListViewStyle.xaml"/> </ResourceDictionary.MergedDictionaries> <Style TargetType="Label"></Style> </ResourceDictionary> </UserControl.Resources> <Grid> <ListView ItemsSource="{Binding Programs}" ItemContainerStyle="{StaticResource a}" VerticalContentAlignment="Center" SelectionChanged="ListView_SelectionChanged"> <ListView.ItemTemplate> <DataTemplate> <ContentControl Content="{Binding Name}"/> </DataTemplate> </ListView.ItemTemplate> </ListView> </Grid> </UserControl> <UserControl x:Class="WPFProject.UI.Test.ProgramList" 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:vm="clr-namespace:WPFProject.ViewModels" xmlns:dd="urn:gong-wpf-dragdrop" mc:Ignorable="d" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Background="#FFF" > <UserControl.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/WPFProject;component/Style/ListViewStyle.xaml"/> </ResourceDictionary.MergedDictionaries> <Style TargetType="Label"></Style> </ResourceDictionary> </UserControl.Resources> <Grid> <ListView ItemsSource="{Binding Programs}" ItemContainerStyle="{StaticResource a}" VerticalContentAlignment="Center" SelectionChanged="ListView_SelectionChanged"> <ListView.ItemTemplate> <DataTemplate> <ContentControl Content="{Binding Name}"/> </DataTemplate> </ListView.ItemTemplate> </ListView> </Grid> </UserControl> WPFProject/UI/Test/ProgramList.xaml.cs
File was renamed from UI/Test/ProgramList.xaml.cs @@ -1,78 +1,80 @@ using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.IO; using System.Runtime.CompilerServices; using System.Windows.Controls; using System.Xml.Serialization; using WPFProject.Models; using WPFProject.Utils; namespace WPFProject.UI.Test { /// <summary> /// ProgramList.xaml 的交互逻辑 /// </summary> public partial class ProgramList : UserControl, INotifyPropertyChanged { public virtual event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } private ObservableCollection<Program> _Programs = new ObservableCollection<Program> { new Program{ Name="123"}.AddSequnce(new Sequence{ Name="S123" },new Sequence { Name="S223" }), new Program{ Name="223"}.AddSequnce(new Sequence{ Name="D123" },new Sequence { Name="D223" }) }; public ObservableCollection<Program> Programs { get { return _Programs; } set => RaiseAndSetIfChanged(ref _Programs, value); } public ProgramList() { DataContext = this; InitializeComponent(); } public event EventHandler<Program> ProgramChanged; private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { ttt(); if (e.AddedItems.Count > 0) { ProgramChanged?.Invoke(this, e.AddedItems[0] as Program); } } public void ttt() { string path = "X:\\vs\\WPFProject\\test.xml"; XmlUtil.SerialToFile(Programs, path); } } } using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.IO; using System.Runtime.CompilerServices; using System.Windows.Controls; using System.Xml.Serialization; using WPFProject.Models; using WPFProject.Utils; namespace WPFProject.UI.Test { /// <summary> /// ProgramList.xaml 的交互逻辑 /// </summary> public partial class ProgramList : UserControl, INotifyPropertyChanged { public virtual event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } private ObservableCollection<Program> _Programs = new ObservableCollection<Program> { new Program{ Name="123"}.AddSequnce(new Sequence{ Name="S123" },new Sequence { Name="S223" }), new Program{ Name="223"}.AddSequnce(new Sequence{ Name="D123" },new Sequence { Name="D223" }) }; public ObservableCollection<Program> Programs { get { return _Programs; } set => RaiseAndSetIfChanged(ref _Programs, value); } public ProgramList() { DataContext = this; InitializeComponent(); } public event EventHandler<Program> ProgramChanged; private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { ttt(); if (e.AddedItems.Count > 0) { Program program = e.AddedItems[0] as Program; ProgramChanged?.Invoke(this, program); program.RunProgram(); } } public void ttt() { //string path = "X:\\vs\\WPFProject\\test.xml"; //XmlUtil.SerialToFile(Programs, path); } } } WPFProject/UI/Test/SequnceList.xaml
File was renamed from UI/Test/SequnceList.xaml @@ -1,226 +1,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="/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> <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> WPFProject/UI/Test/SequnceList.xaml.cs
File was renamed from UI/Test/SequnceList.xaml.cs @@ -1,97 +1,97 @@ using AIStudio.Wpf.Controls; using GongSolutions.Wpf.DragDrop; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows.Controls; using WPFProject.Models; using WPFProject.Utils; namespace WPFProject.UI.Test { /// <summary> /// SequnceList.xaml 的交互逻辑 /// </summary> public partial class SequnceList : UserControl, INotifyPropertyChanged { public virtual event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } public SequnceList() { DataContext = this; Sequences = new ObservableCollection<Sequence> { new Sequence{ Name="SSSSS"}, new Sequence{ Name="SSSSS2"}, }; Steps = Sequences[0].Steps; InitializeComponent(); } private ObservableCollection<Program> _ps = new ObservableCollection<Program>(); public ObservableCollection<Program> Ps { get => _ps; set => RaiseAndSetIfChanged(ref _ps, value); } private ObservableCollection<Sequence> _Sequences; public ObservableCollection<Sequence> Sequences { get => _Sequences; set { if (value != null && value.Count > 0) { Steps = value[0].Steps; } else { Steps = null; } RaiseAndSetIfChanged(ref _Sequences, value); } } private ObservableCollection<Step> _Steps; public ObservableCollection<Step> Steps { get => _Steps; set => RaiseAndSetIfChanged(ref _Steps, value); } public void Selected_Program_Changed(object sender, Program program) { this.Sequences = program.Sequences; } private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count > 0) { Steps = (e.AddedItems[0] as Sequence).Steps; } } public IDropTarget dropHandler { get; set; } = new DdDropHandler(); } } using AIStudio.Wpf.Controls; using GongSolutions.Wpf.DragDrop; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows.Controls; using WPFProject.Models; using WPFProject.Utils; namespace WPFProject.UI.Test { /// <summary> /// SequnceList.xaml 的交互逻辑 /// </summary> public partial class SequnceList : UserControl, INotifyPropertyChanged { public virtual event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } public SequnceList() { DataContext = this; Sequences = new ObservableCollection<Sequence> { new Sequence{ Name="SSSSS"}, new Sequence{ Name="SSSSS2"}, }; Steps = Sequences[0].Steps; InitializeComponent(); } private ObservableCollection<Program> _ps = new ObservableCollection<Program>(); public ObservableCollection<Program> Ps { get => _ps; set => RaiseAndSetIfChanged(ref _ps, value); } private ObservableCollection<Sequence> _Sequences; public ObservableCollection<Sequence> Sequences { get => _Sequences; set { if (value != null && value.Count > 0) { Steps = value[0].Steps; } else { Steps = null; } RaiseAndSetIfChanged(ref _Sequences, value); } } private ObservableCollection<Step> _Steps; public ObservableCollection<Step> Steps { get => _Steps; set => RaiseAndSetIfChanged(ref _Steps, value); } public void Selected_Program_Changed(object sender, Program program) { this.Sequences = program.Sequences; } private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count > 0) { Steps = (e.AddedItems[0] as Sequence).Steps; } } public IDropTarget dropHandler { get; set; } = new DdDropHandler(); } } WPFProject/UI/TestWindow.xaml
WPFProject/UI/TestWindow.xaml.cs
WPFProject/UI/WorkControl.xaml
WPFProject/UI/WorkControl.xaml.cs
File was renamed from UI/WorkControl.xaml.cs @@ -1,287 +1,287 @@ using System; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using WPFProject.Controls; using WPFProject.Models; using WPFProject.UI.Test; using WPFProject.Utils; namespace WPFProject.UI { /// <summary> /// WorkControl.xaml 的交互逻辑 /// </summary> public partial class WorkControl : UserControl, IPlugin { public WorkControl() { InitializeComponent(); Loaded += UserControl_Loaded; } private List<CanvasPosition> InitGridSize() { List<CanvasPosition> result = new List<CanvasPosition>(); result.Add(new CanvasPosition { Left = 0, Top = 0, Width = 0.1 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); result.Add(new CanvasPosition { Left = 0.1 * ActualWidth + 2, Top = 0, Width = 0.5 * ActualWidth - 4, Height = ActualHeight, }); result.Add(new CanvasPosition { Left = 0.6 * ActualWidth + 2, Top = 0, Width = 0.4 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); result.Add(new CanvasPosition { Left = 0, Top = 0.5 * ActualHeight + 2, Width = 0.1 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); result.Add(new CanvasPosition { Left = 0.6 * ActualWidth + 2, Top = 0.5 * ActualHeight + 2, Width = 0.4 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); return result; } private void UserControl_Loaded(object sender, RoutedEventArgs e) { List<CanvasPosition> pos = InitGridSize(); ProgramList programList = new ProgramList(); InnerWindow p = new InnerWindow(pos[0]) { Title = "程序列表", Content = programList }; HandleInnerWindow(p); InnerWindow p1 = new InnerWindow(pos[1]) { Title = "图片", }; HandleInnerWindow(p1); SequnceList sequnceList = new SequnceList(); programList.ProgramChanged += sequnceList.Selected_Program_Changed; InnerWindow p2 = new InnerWindow(pos[2]) { Title = "序列", Content = sequnceList }; HandleInnerWindow(p2); FunctionSetting functionSetting = new FunctionSetting(); InnerWindow p3 = new InnerWindow(pos[3]) { Title = "函数", Content = functionSetting }; HandleInnerWindow(p3); StepSetting stepSetting = new StepSetting(); InnerWindow p4 = new InnerWindow(pos[4]) { Title = "单步设置", Content = stepSetting }; HandleInnerWindow(p4); SizeChanged += WorkControl_SizeChanged; Loaded -= UserControl_Loaded; } public int CanvasChildrenCount { get; private set; } = 0; #region InnerWindow操作逻辑 /// <summary> /// 设置InnerWindow /// </summary> /// <param name="inner"></param> private void HandleInnerWindow(InnerWindow inner) { inner.MinEvent += InnerWindowMin; inner.MaxEvent += InnerWindowMax; inner.ZIndexEvent += Inner_ZIndexEvent; inner.GotFocus += Inner_GotFocus; inner.AttachToCanvas(WorkArea); inner.Zindex = CanvasChildrenCount++; } /// <summary> /// InnerWindow焦点事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Inner_GotFocus(object sender, RoutedEventArgs e) { CanvasHelper.SetTopZIndex(sender as InnerWindow, WorkArea, typeof(InnerWindow)); } /// <summary> /// InnerWindow ZIndex切换事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Inner_ZIndexEvent(object sender, EventArgs e) { CanvasHelper.SetTopZIndex(sender as InnerWindow, WorkArea, typeof(InnerWindow)); } /// <summary> /// InnerWindow最小化事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void InnerWindowMin(object sender, System.EventArgs e) { InnerWindow inner = sender as InnerWindow; inner.Visibility = Visibility.Collapsed; HandleMinInnerWindow(inner); } /// <summary> /// InnerWindow最大化事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void InnerWindowMax(object sender, System.EventArgs e) { InnerWindow inner = sender as InnerWindow; if (inner.WindowState == WindowState.Maximized) { Canvas.SetLeft(inner, inner.canvasPosition.Left); Canvas.SetTop(inner, inner.canvasPosition.Top); inner.Width = inner.canvasPosition.Width; inner.Height = inner.canvasPosition.Height; inner.WindowState = WindowState.Normal; } else { Canvas.SetLeft(inner, 0); Canvas.SetTop(inner, 0); inner.Width = WorkArea.ActualWidth; inner.Height = WorkArea.ActualHeight; inner.WindowState = WindowState.Maximized; } } /// <summary> /// 重设大小 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void WorkControl_SizeChanged(object sender, SizeChangedEventArgs e) { //Size newSize = e.NewSize; //Size previousSize = e.PreviousSize; //double xRate = newSize.Width / previousSize.Width; //double yRate = newSize.Height / previousSize.Height; //for (int i = 0; i < VisualTreeHelper.GetChildrenCount(WorkArea); i++) //{ // UIElement child = VisualTreeHelper.GetChild(WorkArea, i) as UIElement; // Canvas.SetLeft(child, Canvas.GetLeft(child) * xRate); // Canvas.SetTop(child, Canvas.GetTop(child) * yRate); //} //for (int i = 0; i < VisualTreeHelper.GetChildrenCount(WorkArea); i++) //{ // UIElement child = VisualTreeHelper.GetChild(WorkArea, i) as UIElement; // if (Canvas.GetLeft(child) >= newSize.Width) // { // Canvas.SetLeft(child, Canvas.GetLeft(child) + newSize.Width - previousSize.Width); // } // if (Canvas.GetTop(child) >= newSize.Height) // { // Canvas.SetTop(child, Canvas.GetTop(child) + newSize.Height - previousSize.Height); // } //} } #endregion #region 底部MinInnerWindow相关 /// <summary> /// 底部MinInnerWindow处理 /// </summary> /// <param name="inner"></param> private void HandleMinInnerWindow(InnerWindow inner) { MinInnerWindow min = new MinInnerWindow(inner); min.MaxEvent += MinInnerWindowMax; min.CloseEvent += MinInnerWindowClose; BottomBar.AddMinWindow(min); } /// <summary> /// 底部MinInnerWindow展开 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MinInnerWindowMax(object sender, System.EventArgs e) { MinInnerWindow min = sender as MinInnerWindow; min.Inner.Visibility = Visibility.Visible; CanvasHelper.SetTopZIndex(min.Inner, WorkArea, typeof(InnerWindow)); BottomBar.RemoveMinWindow(min); } /// <summary> /// 底部MinInnerWin关闭 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MinInnerWindowClose(object sender, System.EventArgs e) { MinInnerWindow min = sender as MinInnerWindow; BottomBar.RemoveMinWindow(min); } #endregion public void OnTabChange(object sender, SelectionChangedEventArgs args) { if (args.AddedItems.Count > 0) { IconTabItem newTab = args.AddedItems[0] as IconTabItem; if (newTab != null && newTab.Content == this) { } } if (args.RemovedItems.Count > 0) { IconTabItem oldTab = args.RemovedItems[0] as IconTabItem; if (oldTab != null && oldTab.Content == this) { } } } } using System; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using WPFProject.Controls; using WPFProject.Models; using WPFProject.UI.Test; using WPFProject.Utils; namespace WPFProject.UI { /// <summary> /// WorkControl.xaml 的交互逻辑 /// </summary> public partial class WorkControl : UserControl, IPlugin { public WorkControl() { InitializeComponent(); Loaded += UserControl_Loaded; } private List<CanvasPosition> InitGridSize() { List<CanvasPosition> result = new List<CanvasPosition>(); result.Add(new CanvasPosition { Left = 0, Top = 0, Width = 0.1 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); result.Add(new CanvasPosition { Left = 0.1 * ActualWidth + 2, Top = 0, Width = 0.5 * ActualWidth - 4, Height = ActualHeight, }); result.Add(new CanvasPosition { Left = 0.6 * ActualWidth + 2, Top = 0, Width = 0.4 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); result.Add(new CanvasPosition { Left = 0, Top = 0.5 * ActualHeight + 2, Width = 0.1 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); result.Add(new CanvasPosition { Left = 0.6 * ActualWidth + 2, Top = 0.5 * ActualHeight + 2, Width = 0.4 * ActualWidth - 2, Height = 0.5 * ActualHeight - 2 }); return result; } private void UserControl_Loaded(object sender, RoutedEventArgs e) { List<CanvasPosition> pos = InitGridSize(); ProgramList programList = new ProgramList(); InnerWindow p = new InnerWindow(pos[0]) { Title = "程序列表", Content = programList }; HandleInnerWindow(p); InnerWindow p1 = new InnerWindow(pos[1]) { Title = "图片", }; HandleInnerWindow(p1); SequnceList sequnceList = new SequnceList(); programList.ProgramChanged += sequnceList.Selected_Program_Changed; InnerWindow p2 = new InnerWindow(pos[2]) { Title = "序列", Content = sequnceList }; HandleInnerWindow(p2); FunctionSetting functionSetting = new FunctionSetting(); InnerWindow p3 = new InnerWindow(pos[3]) { Title = "函数", Content = functionSetting }; HandleInnerWindow(p3); StepSetting stepSetting = new StepSetting(); InnerWindow p4 = new InnerWindow(pos[4]) { Title = "单步设置", Content = stepSetting }; HandleInnerWindow(p4); SizeChanged += WorkControl_SizeChanged; Loaded -= UserControl_Loaded; } public int CanvasChildrenCount { get; private set; } = 0; #region InnerWindow操作逻辑 /// <summary> /// 设置InnerWindow /// </summary> /// <param name="inner"></param> private void HandleInnerWindow(InnerWindow inner) { inner.MinEvent += InnerWindowMin; inner.MaxEvent += InnerWindowMax; inner.ZIndexEvent += Inner_ZIndexEvent; inner.GotFocus += Inner_GotFocus; inner.AttachToCanvas(WorkArea); inner.Zindex = CanvasChildrenCount++; } /// <summary> /// InnerWindow焦点事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Inner_GotFocus(object sender, RoutedEventArgs e) { CanvasHelper.SetTopZIndex(sender as InnerWindow, WorkArea, typeof(InnerWindow)); } /// <summary> /// InnerWindow ZIndex切换事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Inner_ZIndexEvent(object sender, EventArgs e) { CanvasHelper.SetTopZIndex(sender as InnerWindow, WorkArea, typeof(InnerWindow)); } /// <summary> /// InnerWindow最小化事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void InnerWindowMin(object sender, System.EventArgs e) { InnerWindow inner = sender as InnerWindow; inner.Visibility = Visibility.Collapsed; HandleMinInnerWindow(inner); } /// <summary> /// InnerWindow最大化事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void InnerWindowMax(object sender, System.EventArgs e) { InnerWindow inner = sender as InnerWindow; if (inner.WindowState == WindowState.Maximized) { Canvas.SetLeft(inner, inner.canvasPosition.Left); Canvas.SetTop(inner, inner.canvasPosition.Top); inner.Width = inner.canvasPosition.Width; inner.Height = inner.canvasPosition.Height; inner.WindowState = WindowState.Normal; } else { Canvas.SetLeft(inner, 0); Canvas.SetTop(inner, 0); inner.Width = WorkArea.ActualWidth; inner.Height = WorkArea.ActualHeight; inner.WindowState = WindowState.Maximized; } } /// <summary> /// 重设大小 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void WorkControl_SizeChanged(object sender, SizeChangedEventArgs e) { //Size newSize = e.NewSize; //Size previousSize = e.PreviousSize; //double xRate = newSize.Width / previousSize.Width; //double yRate = newSize.Height / previousSize.Height; //for (int i = 0; i < VisualTreeHelper.GetChildrenCount(WorkArea); i++) //{ // UIElement child = VisualTreeHelper.GetChild(WorkArea, i) as UIElement; // Canvas.SetLeft(child, Canvas.GetLeft(child) * xRate); // Canvas.SetTop(child, Canvas.GetTop(child) * yRate); //} //for (int i = 0; i < VisualTreeHelper.GetChildrenCount(WorkArea); i++) //{ // UIElement child = VisualTreeHelper.GetChild(WorkArea, i) as UIElement; // if (Canvas.GetLeft(child) >= newSize.Width) // { // Canvas.SetLeft(child, Canvas.GetLeft(child) + newSize.Width - previousSize.Width); // } // if (Canvas.GetTop(child) >= newSize.Height) // { // Canvas.SetTop(child, Canvas.GetTop(child) + newSize.Height - previousSize.Height); // } //} } #endregion #region 底部MinInnerWindow相关 /// <summary> /// 底部MinInnerWindow处理 /// </summary> /// <param name="inner"></param> private void HandleMinInnerWindow(InnerWindow inner) { MinInnerWindow min = new MinInnerWindow(inner); min.MaxEvent += MinInnerWindowMax; min.CloseEvent += MinInnerWindowClose; BottomBar.AddMinWindow(min); } /// <summary> /// 底部MinInnerWindow展开 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MinInnerWindowMax(object sender, System.EventArgs e) { MinInnerWindow min = sender as MinInnerWindow; min.Inner.Visibility = Visibility.Visible; CanvasHelper.SetTopZIndex(min.Inner, WorkArea, typeof(InnerWindow)); BottomBar.RemoveMinWindow(min); } /// <summary> /// 底部MinInnerWin关闭 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MinInnerWindowClose(object sender, System.EventArgs e) { MinInnerWindow min = sender as MinInnerWindow; BottomBar.RemoveMinWindow(min); } #endregion public void OnTabChange(object sender, SelectionChangedEventArgs args) { if (args.AddedItems.Count > 0) { IconTabItem newTab = args.AddedItems[0] as IconTabItem; if (newTab != null && newTab.Content == this) { } } if (args.RemovedItems.Count > 0) { IconTabItem oldTab = args.RemovedItems[0] as IconTabItem; if (oldTab != null && oldTab.Content == this) { } } } } } WPFProject/UI/WorkWindow.xaml
WPFProject/UI/WorkWindow.xaml.cs
WPFProject/Utils/CanvasHelper.cs
WPFProject/Utils/DdDragHandler.cs
File was renamed from Utils/DdDragHandler.cs @@ -1,20 +1,20 @@ using GongSolutions.Wpf.DragDrop; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using WPFProject.Models; namespace WPFProject.Utils { public class DdDragHandler : DefaultDragHandler { public override bool CanStartDrag(IDragInfo dragInfo) { FuncModel model = dragInfo.SourceItem as FuncModel; return model.Children ==null || model.Children.Count == 0; } } } using GongSolutions.Wpf.DragDrop; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using WPFProject.Models; namespace WPFProject.Utils { public class DdDragHandler : DefaultDragHandler { public override bool CanStartDrag(IDragInfo dragInfo) { FuncModel model = dragInfo.SourceItem as FuncModel; return model.Children ==null || model.Children.Count == 0; } } } WPFProject/Utils/DdDropHandler.cs
File was renamed from Utils/DdDropHandler.cs @@ -1,94 +1,94 @@ using GongSolutions.Wpf.DragDrop; using GongSolutions.Wpf.DragDrop.Utilities; using System.Collections.Generic; using System.ComponentModel; using System; using System.Windows; using System.Windows.Controls; using System.Windows.Markup; using System.Linq; using System.Collections; using WPFProject.Models; namespace WPFProject.Utils { public class DdDropHandler : DefaultDropHandler { public bool CanConvert(IDropInfo dropInfo) { bool InterfaceFilter(Type t, object o) => (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IEnumerable<>)); Type[] enumerableInterfaces = dropInfo.TargetCollection.GetType().FindInterfaces(InterfaceFilter, null); var enumerableTypes = from i in enumerableInterfaces select i.GetGenericArguments().Single(); if (enumerableTypes.Any()) { Type dataType = TypeUtilities.GetCommonBaseClass(ExtractData(dropInfo.Data)); return dataType == typeof(FuncModel) && enumerableTypes.Any(t => t==typeof(Step)); } return false; } public Step ConvertFunc2Step(FuncModel func) { return new Step { Name = func.Name }; } public override void DragOver(IDropInfo dropInfo) { if (CanAcceptData(dropInfo)) { base.DragOver(dropInfo); } else if (CanConvert(dropInfo)) { // 固定Copy dropInfo.Effects = DragDropEffects.Copy; var isTreeViewItem = dropInfo.InsertPosition.HasFlag(RelativeInsertPosition.TargetItemCenter) && dropInfo.VisualTargetItem is TreeViewItem; dropInfo.DropTargetAdorner = isTreeViewItem ? DropTargetAdorners.Highlight : DropTargetAdorners.Insert; } } public override void Drop(IDropInfo dropInfo) { if (CanAcceptData(dropInfo)) { base.Drop(dropInfo); } else if (CanConvert(dropInfo)) { int insertIndex = GetInsertIndex(dropInfo); var destinationList = dropInfo.TargetCollection.TryGetList(); var data = ExtractData(dropInfo.Data).OfType<object>().ToList(); if (destinationList != null) { var objects2Insert = new List<object>(); foreach (var o in data) { var obj2Insert = ConvertFunc2Step(o as FuncModel); objects2Insert.Add(obj2Insert); destinationList.Insert(insertIndex++, obj2Insert); // 下方对象如果实现了 IDragItemSource 接口,会在这里调用 ItemDropped 方法,算是后置处理 if (obj2Insert is IDragItemSource dragItemSource) { dragItemSource.ItemDropped(dropInfo); } } SelectDroppedItems(dropInfo, objects2Insert); } } } } } using GongSolutions.Wpf.DragDrop; using GongSolutions.Wpf.DragDrop.Utilities; using System.Collections.Generic; using System.ComponentModel; using System; using System.Windows; using System.Windows.Controls; using System.Windows.Markup; using System.Linq; using System.Collections; using WPFProject.Models; namespace WPFProject.Utils { public class DdDropHandler : DefaultDropHandler { public bool CanConvert(IDropInfo dropInfo) { bool InterfaceFilter(Type t, object o) => (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IEnumerable<>)); Type[] enumerableInterfaces = dropInfo.TargetCollection.GetType().FindInterfaces(InterfaceFilter, null); var enumerableTypes = from i in enumerableInterfaces select i.GetGenericArguments().Single(); if (enumerableTypes.Any()) { Type dataType = TypeUtilities.GetCommonBaseClass(ExtractData(dropInfo.Data)); return dataType == typeof(FuncModel) && enumerableTypes.Any(t => t==typeof(Step)); } return false; } public Step ConvertFunc2Step(FuncModel func) { return new Step { Name = func.Name }; } public override void DragOver(IDropInfo dropInfo) { if (CanAcceptData(dropInfo)) { base.DragOver(dropInfo); } else if (CanConvert(dropInfo)) { // 固定Copy dropInfo.Effects = DragDropEffects.Copy; var isTreeViewItem = dropInfo.InsertPosition.HasFlag(RelativeInsertPosition.TargetItemCenter) && dropInfo.VisualTargetItem is TreeViewItem; dropInfo.DropTargetAdorner = isTreeViewItem ? DropTargetAdorners.Highlight : DropTargetAdorners.Insert; } } public override void Drop(IDropInfo dropInfo) { if (CanAcceptData(dropInfo)) { base.Drop(dropInfo); } else if (CanConvert(dropInfo)) { int insertIndex = GetInsertIndex(dropInfo); var destinationList = dropInfo.TargetCollection.TryGetList(); var data = ExtractData(dropInfo.Data).OfType<object>().ToList(); if (destinationList != null) { var objects2Insert = new List<object>(); foreach (var o in data) { var obj2Insert = ConvertFunc2Step(o as FuncModel); objects2Insert.Add(obj2Insert); destinationList.Insert(insertIndex++, obj2Insert); // 下方对象如果实现了 IDragItemSource 接口,会在这里调用 ItemDropped 方法,算是后置处理 if (obj2Insert is IDragItemSource dragItemSource) { dragItemSource.ItemDropped(dropInfo); } } SelectDroppedItems(dropInfo, objects2Insert); } } } } } WPFProject/Utils/IPlugin.cs
WPFProject/Utils/Resize.cs
File was renamed from Utils/Resize.cs @@ -420,13 +420,13 @@ double oldLeft = double.IsNaN(Canvas.GetLeft(target)) ? 0 : Canvas.GetLeft(target), oldTop = double.IsNaN(Canvas.GetTop(target)) ? 0 : Canvas.GetTop(target), oldWidth = double.IsNaN(target.ActualWidth) ? 0 : target.ActualWidth, oldHeight = double.IsNaN(target.ActualHeight) ? 0 : target.ActualHeight; oldHeight = double.IsNaN(target.ActualHeight) ? 0 : target.ActualHeight; double left, top, width, height; double x = e.HorizontalChange, y = e.VerticalChange; bool toLeft = x < 0, toTop = y < 0; bool isLeft = thumb.HorizontalAlignment == HorizontalAlignment.Left, isTop = thumb.VerticalAlignment == VerticalAlignment.Top; bool toLeft = x < 0, toTop = y < 0; bool isLeft = thumb.HorizontalAlignment == HorizontalAlignment.Left, isTop = thumb.VerticalAlignment == VerticalAlignment.Top; if (isLeft) { // 左侧的拖拽 @@ -461,33 +461,33 @@ if (top + height > parent.ActualHeight) height = parent.ActualHeight - top; } if (thumb.HorizontalAlignment != HorizontalAlignment.Center && if (thumb.HorizontalAlignment != HorizontalAlignment.Center && thumb.HorizontalAlignment != HorizontalAlignment.Stretch) { // 水平方向最终判断 Canvas.SetLeft(target, left); target.Width = width; //if ((isLeft && toLeft && left >= 0) || // (isLeft && !toLeft && width >= MinWidth) || // (!isLeft && toLeft && width >= MinWidth) || // (!isLeft && !toLeft && (left + width) <= parent.ActualWidth)) //{ //if ((isLeft && toLeft && left >= 0) || // (isLeft && !toLeft && width >= MinWidth) || // (!isLeft && toLeft && width >= MinWidth) || // (!isLeft && !toLeft && (left + width) <= parent.ActualWidth)) //{ // Canvas.SetLeft(target, left); // target.Width = width; //} } if (thumb.VerticalAlignment != VerticalAlignment.Center && if (thumb.VerticalAlignment != VerticalAlignment.Center && thumb.VerticalAlignment != VerticalAlignment.Stretch) { // 垂直方向最终判断 Canvas.SetTop(target, top); Canvas.SetTop(target, top); target.Height = height; //if ((isTop && toTop && top >= 0) || // (isTop && !toTop && height >= MinHeight) || // (!isTop && toTop && height >= MinHeight) || // (!isTop && !toTop && (top + height) <= parent.ActualHeight)) //{ //if ((isTop && toTop && top >= 0) || // (isTop && !toTop && height >= MinHeight) || // (!isTop && toTop && height >= MinHeight) || // (!isTop && !toTop && (top + height) <= parent.ActualHeight)) //{ // Canvas.SetTop(target, top); // target.Height = height; //} WPFProject/Utils/Win32Helper.cs
WPFProject/Utils/XmlUtil.cs
File was renamed from Utils/XmlUtil.cs @@ -1,41 +1,41 @@ using System; using System.IO; using System.Xml.Serialization; namespace WPFProject.Utils { public class XmlUtil { /// <summary> /// 将对象序列化到Xml文件中 /// </summary> /// <param name="data">对象</param> /// <param name="filePath">xml路径</param> public static void SerialToFile(object data, string filePath) { XmlSerializer serializer = new XmlSerializer(data.GetType()); string content = string.Empty; //serialize using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, data); content = writer.ToString(); } //save to file using (StreamWriter stream_writer = new StreamWriter(filePath)) { stream_writer.Write(content); } } public static T DeserialFromXml<T>(string filePath) { XmlSerializer serializer = new XmlSerializer(typeof(T)); using (StreamReader reader = new StreamReader(filePath)) { return (T) serializer.Deserialize(reader); } } } } using System; using System.IO; using System.Xml.Serialization; namespace WPFProject.Utils { public class XmlUtil { /// <summary> /// 将对象序列化到Xml文件中 /// </summary> /// <param name="data">对象</param> /// <param name="filePath">xml路径</param> public static void SerialToFile(object data, string filePath) { XmlSerializer serializer = new XmlSerializer(data.GetType()); string content = string.Empty; //serialize using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, data); content = writer.ToString(); } //save to file using (StreamWriter stream_writer = new StreamWriter(filePath)) { stream_writer.Write(content); } } public static T DeserialFromXml<T>(string filePath) { XmlSerializer serializer = new XmlSerializer(typeof(T)); using (StreamReader reader = new StreamReader(filePath)) { return (T) serializer.Deserialize(reader); } } } } WPFProject/ViewModels/ProgramListViewModel.cs
WPFProject/WPFProject.csproj
File was renamed from WPFProject.csproj @@ -1,305 +1,305 @@ <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{D47D2314-5DD5-4899-ADF9-15ED057289D3}</ProjectGuid> <OutputType>WinExe</OutputType> <RootNamespace>WPFProject</RootNamespace> <AssemblyName>WPFProject</AssemblyName> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <WarningLevel>4</WarningLevel> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <Deterministic>true</Deterministic> <LangVersion>latest</LangVersion> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="AIStudio.Wpf.Controls, Version=1.2.2.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>packages\AIStudio.Wpf.Controls.1.2.2\lib\net461\AIStudio.Wpf.Controls.dll</HintPath> </Reference> <Reference Include="GongSolutions.WPF.DragDrop, Version=3.0.0.0, Culture=neutral, PublicKeyToken=91f1945125b7a587, processorArchitecture=MSIL"> <HintPath>packages\gong-wpf-dragdrop.3.2.1\lib\net47\GongSolutions.WPF.DragDrop.dll</HintPath> </Reference> <Reference Include="HandyControl, Version=3.4.0.0, Culture=neutral, PublicKeyToken=45be8712787a1e5b, processorArchitecture=MSIL"> <HintPath>packages\HandyControl.3.4.0\lib\net472\HandyControl.dll</HintPath> </Reference> <Reference Include="Microsoft.Xaml.Behaviors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\Microsoft.Xaml.Behaviors.Wpf.1.1.39\lib\net45\Microsoft.Xaml.Behaviors.dll</HintPath> </Reference> <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference> <Reference Include="PresentationFramework.Aero" /> <Reference Include="System" /> <Reference Include="System.ComponentModel.Composition" /> <Reference Include="System.ComponentModel.DataAnnotations" /> <Reference Include="System.Data" /> <Reference Include="System.Drawing" /> <Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Web" /> <Reference Include="System.Web.Extensions" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Xaml"> <RequiredTargetFramework>4.0</RequiredTargetFramework> </Reference> <Reference Include="UIAutomationProvider" /> <Reference Include="WindowsBase" /> <Reference Include="PresentationCore" /> <Reference Include="PresentationFramework" /> <Reference Include="WindowsFormsIntegration" /> <Reference Include="WPF.MDI, Version=1.1.4.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>packages\WPF.MDI.1.1.4\lib\net40-client\WPF.MDI.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> <ApplicationDefinition Include="App.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </ApplicationDefinition> <Compile Include="Controls\DpPlugin.cs" /> <Compile Include="Controls\InnerWindow.xaml.cs"> <DependentUpon>InnerWindow.xaml</DependentUpon> </Compile> <Compile Include="Controls\MinInnerWindow.xaml.cs"> <DependentUpon>MinInnerWindow.xaml</DependentUpon> </Compile> <Compile Include="Events\TabChange.cs" /> <Compile Include="Forms\Form1.cs"> <SubType>Form</SubType> </Compile> <Compile Include="Forms\Form1.Designer.cs"> <DependentUpon>Form1.cs</DependentUpon> </Compile> <Compile Include="Models\CanvasPosition.cs" /> <Compile Include="Models\FuncModel.cs" /> <Compile Include="Models\NotifyBase.cs" /> <Compile Include="Models\Variable.cs" /> <Compile Include="Models\Program.cs" /> <Compile Include="Models\Sequence.cs" /> <Compile Include="Models\Step.cs" /> <Compile Include="UI\BottomBar.xaml.cs"> <DependentUpon>BottomBar.xaml</DependentUpon> </Compile> <Compile Include="UI\StepSetting.xaml.cs"> <DependentUpon>StepSetting.xaml</DependentUpon> </Compile> <Compile Include="UI\TestWindow.xaml.cs"> <DependentUpon>TestWindow.xaml</DependentUpon> </Compile> <Compile Include="UI\Test\FunctionSetting.xaml.cs"> <DependentUpon>FunctionSetting.xaml</DependentUpon> </Compile> <Compile Include="UI\Test\ProgramList.xaml.cs"> <DependentUpon>ProgramList.xaml</DependentUpon> </Compile> <Compile Include="UI\Test\SequnceList.xaml.cs"> <DependentUpon>SequnceList.xaml</DependentUpon> </Compile> <Compile Include="UI\WorkControl.xaml.cs"> <DependentUpon>WorkControl.xaml</DependentUpon> </Compile> <Compile Include="UI\WorkWindow.xaml.cs"> <DependentUpon>WorkWindow.xaml</DependentUpon> </Compile> <Compile Include="Utils\CanvasHelper.cs" /> <Compile Include="Utils\DdDragHandler.cs" /> <Compile Include="Utils\DdDropHandler.cs" /> <Compile Include="Utils\IPlugin.cs" /> <Compile Include="Utils\Resize.cs" /> <Compile Include="Utils\Win32Helper.cs" /> <Compile Include="Utils\XmlUtil.cs" /> <Compile Include="ViewModels\ProgramListViewModel.cs" /> <Page Include="Controls\InnerWindow.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Controls\MenuTabControl.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Controls\MinInnerWindow.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="MainWindow.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> <Compile Include="App.xaml.cs"> <DependentUpon>App.xaml</DependentUpon> <SubType>Code</SubType> </Compile> <Compile Include="Controls\IconTabItem.cs" /> <Compile Include="Controls\MenuTabControl.xaml.cs"> <DependentUpon>MenuTabControl.xaml</DependentUpon> </Compile> <Compile Include="MainWindow.xaml.cs"> <DependentUpon>MainWindow.xaml</DependentUpon> <SubType>Code</SubType> </Compile> <Resource Include="Resources\Font\Font.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Resource> <Page Include="Style\Colors.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Style\ListViewStyle.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Style\CommonTree.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> <Page Include="Style\MainTab.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Style\WindowResources.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\BottomBar.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\StepSetting.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\TestWindow.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\Test\FunctionSetting.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\Test\ProgramList.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\Test\SequnceList.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\WorkControl.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\WorkWindow.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> </ItemGroup> <ItemGroup> <Compile Include="Properties\AssemblyInfo.cs"> <SubType>Code</SubType> </Compile> <Compile Include="Properties\Resources.Designer.cs"> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> <DependentUpon>Resources.resx</DependentUpon> </Compile> <Compile Include="Properties\Settings.Designer.cs"> <AutoGen>True</AutoGen> <DependentUpon>Settings.settings</DependentUpon> <DesignTimeSharedInput>True</DesignTimeSharedInput> </Compile> <EmbeddedResource Include="Forms\Form1.resx"> <DependentUpon>Form1.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="Properties\Resources.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>Resources.Designer.cs</LastGenOutput> </EmbeddedResource> <None Include="packages.config" /> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> <Resource Include="Resources\Font\iconfont.ttf"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Resource> </ItemGroup> <ItemGroup> <None Include="App.config" /> </ItemGroup> <ItemGroup> <WCFMetadata Include="Connected Services\" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\VisionBuilder.Core\VisionBuilder.Core.csproj"> <Project>{65100b0e-1eba-4534-ac73-61ad3ae6ab36}</Project> <Name>VisionBuilder.Core</Name> </ProjectReference> </ItemGroup> <ItemGroup> <Resource Include="Resources\Icon\xinzeng_1.png" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{D47D2314-5DD5-4899-ADF9-15ED057289D3}</ProjectGuid> <OutputType>WinExe</OutputType> <RootNamespace>WPFProject</RootNamespace> <AssemblyName>WPFProject</AssemblyName> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <WarningLevel>4</WarningLevel> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <Deterministic>true</Deterministic> <LangVersion>latest</LangVersion> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <Optimize>false</Optimize> <OutputPath>bin\Debug\</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugType>pdbonly</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> <Reference Include="AIStudio.Wpf.Controls, Version=1.2.2.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>packages\AIStudio.Wpf.Controls.1.2.2\lib\net461\AIStudio.Wpf.Controls.dll</HintPath> </Reference> <Reference Include="GongSolutions.WPF.DragDrop, Version=3.0.0.0, Culture=neutral, PublicKeyToken=91f1945125b7a587, processorArchitecture=MSIL"> <HintPath>packages\gong-wpf-dragdrop.3.2.1\lib\net47\GongSolutions.WPF.DragDrop.dll</HintPath> </Reference> <Reference Include="HandyControl, Version=3.4.0.0, Culture=neutral, PublicKeyToken=45be8712787a1e5b, processorArchitecture=MSIL"> <HintPath>packages\HandyControl.3.4.0\lib\net472\HandyControl.dll</HintPath> </Reference> <Reference Include="Microsoft.Xaml.Behaviors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\Microsoft.Xaml.Behaviors.Wpf.1.1.39\lib\net45\Microsoft.Xaml.Behaviors.dll</HintPath> </Reference> <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference> <Reference Include="PresentationFramework.Aero" /> <Reference Include="System" /> <Reference Include="System.ComponentModel.Composition" /> <Reference Include="System.ComponentModel.DataAnnotations" /> <Reference Include="System.Data" /> <Reference Include="System.Drawing" /> <Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath> <Private>True</Private> <Private>True</Private> </Reference> <Reference Include="System.Web" /> <Reference Include="System.Web.Extensions" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Xaml"> <RequiredTargetFramework>4.0</RequiredTargetFramework> </Reference> <Reference Include="UIAutomationProvider" /> <Reference Include="WindowsBase" /> <Reference Include="PresentationCore" /> <Reference Include="PresentationFramework" /> <Reference Include="WindowsFormsIntegration" /> <Reference Include="WPF.MDI, Version=1.1.4.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>packages\WPF.MDI.1.1.4\lib\net40-client\WPF.MDI.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> <ApplicationDefinition Include="App.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </ApplicationDefinition> <Compile Include="Controls\DpPlugin.cs" /> <Compile Include="Controls\InnerWindow.xaml.cs"> <DependentUpon>InnerWindow.xaml</DependentUpon> </Compile> <Compile Include="Controls\MinInnerWindow.xaml.cs"> <DependentUpon>MinInnerWindow.xaml</DependentUpon> </Compile> <Compile Include="Events\TabChange.cs" /> <Compile Include="Forms\Form1.cs"> <SubType>Form</SubType> </Compile> <Compile Include="Forms\Form1.Designer.cs"> <DependentUpon>Form1.cs</DependentUpon> </Compile> <Compile Include="Models\CanvasPosition.cs" /> <Compile Include="Models\FuncModel.cs" /> <Compile Include="Models\NotifyBase.cs" /> <Compile Include="Models\Variable.cs" /> <Compile Include="Models\Program.cs" /> <Compile Include="Models\Sequence.cs" /> <Compile Include="Models\Step.cs" /> <Compile Include="UI\BottomBar.xaml.cs"> <DependentUpon>BottomBar.xaml</DependentUpon> </Compile> <Compile Include="UI\StepSetting.xaml.cs"> <DependentUpon>StepSetting.xaml</DependentUpon> </Compile> <Compile Include="UI\TestWindow.xaml.cs"> <DependentUpon>TestWindow.xaml</DependentUpon> </Compile> <Compile Include="UI\Test\FunctionSetting.xaml.cs"> <DependentUpon>FunctionSetting.xaml</DependentUpon> </Compile> <Compile Include="UI\Test\ProgramList.xaml.cs"> <DependentUpon>ProgramList.xaml</DependentUpon> </Compile> <Compile Include="UI\Test\SequnceList.xaml.cs"> <DependentUpon>SequnceList.xaml</DependentUpon> </Compile> <Compile Include="UI\WorkControl.xaml.cs"> <DependentUpon>WorkControl.xaml</DependentUpon> </Compile> <Compile Include="UI\WorkWindow.xaml.cs"> <DependentUpon>WorkWindow.xaml</DependentUpon> </Compile> <Compile Include="Utils\CanvasHelper.cs" /> <Compile Include="Utils\DdDragHandler.cs" /> <Compile Include="Utils\DdDropHandler.cs" /> <Compile Include="Utils\IPlugin.cs" /> <Compile Include="Utils\Resize.cs" /> <Compile Include="Utils\Win32Helper.cs" /> <Compile Include="Utils\XmlUtil.cs" /> <Compile Include="ViewModels\ProgramListViewModel.cs" /> <Page Include="Controls\InnerWindow.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Controls\MenuTabControl.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Controls\MinInnerWindow.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="MainWindow.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> <Compile Include="App.xaml.cs"> <DependentUpon>App.xaml</DependentUpon> <SubType>Code</SubType> </Compile> <Compile Include="Controls\IconTabItem.cs" /> <Compile Include="Controls\MenuTabControl.xaml.cs"> <DependentUpon>MenuTabControl.xaml</DependentUpon> </Compile> <Compile Include="MainWindow.xaml.cs"> <DependentUpon>MainWindow.xaml</DependentUpon> <SubType>Code</SubType> </Compile> <Resource Include="Resources\Font\Font.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Resource> <Page Include="Style\Colors.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Style\ListViewStyle.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Style\CommonTree.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> <Page Include="Style\MainTab.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="Style\WindowResources.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\BottomBar.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\StepSetting.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\TestWindow.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\Test\FunctionSetting.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\Test\ProgramList.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\Test\SequnceList.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\WorkControl.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> <Page Include="UI\WorkWindow.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> </ItemGroup> <ItemGroup> <Compile Include="Properties\AssemblyInfo.cs"> <SubType>Code</SubType> </Compile> <Compile Include="Properties\Resources.Designer.cs"> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> <DependentUpon>Resources.resx</DependentUpon> </Compile> <Compile Include="Properties\Settings.Designer.cs"> <AutoGen>True</AutoGen> <DependentUpon>Settings.settings</DependentUpon> <DesignTimeSharedInput>True</DesignTimeSharedInput> </Compile> <EmbeddedResource Include="Forms\Form1.resx"> <DependentUpon>Form1.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="Properties\Resources.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>Resources.Designer.cs</LastGenOutput> </EmbeddedResource> <None Include="packages.config" /> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> <Resource Include="Resources\Font\iconfont.ttf"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Resource> </ItemGroup> <ItemGroup> <None Include="App.config" /> </ItemGroup> <ItemGroup> <WCFMetadata Include="Connected Services\" /> </ItemGroup> <ItemGroup> <Resource Include="Resources\Icon\xinzeng_1.png" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\VisionBuilder.Core\VisionBuilder.Core.csproj"> <Project>{3e3bf44a-0b69-45c5-9512-528cb48a7106}</Project> <Name>VisionBuilder.Core</Name> </ProjectReference> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project> WPFProject/WPFProject.sln
New file @@ -0,0 +1,43 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.33328.57 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFProject", "WPFProject.csproj", "{D47D2314-5DD5-4899-ADF9-15ED057289D3}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisionBuilder.Core", "..\VisionBuilder.Core\VisionBuilder.Core.csproj", "{3E3BF44A-0B69-45C5-9512-528CB48A7106}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisionBuilder.Test", "..\VisionBuilder.Test\VisionBuilder.Test.csproj", "{6E1CC97A-B3CB-4E9F-94E0-F264DE0D8298}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisionBuilder.Engine", "..\VisionBuilder.Engine\VisionBuilder.Engine.csproj", "{8E5E8A68-0B9D-4A6A-B325-730C64603FDF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {D47D2314-5DD5-4899-ADF9-15ED057289D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D47D2314-5DD5-4899-ADF9-15ED057289D3}.Debug|Any CPU.Build.0 = Debug|Any CPU {D47D2314-5DD5-4899-ADF9-15ED057289D3}.Release|Any CPU.ActiveCfg = Release|Any CPU {D47D2314-5DD5-4899-ADF9-15ED057289D3}.Release|Any CPU.Build.0 = Release|Any CPU {3E3BF44A-0B69-45C5-9512-528CB48A7106}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3E3BF44A-0B69-45C5-9512-528CB48A7106}.Debug|Any CPU.Build.0 = Debug|Any CPU {3E3BF44A-0B69-45C5-9512-528CB48A7106}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E3BF44A-0B69-45C5-9512-528CB48A7106}.Release|Any CPU.Build.0 = Release|Any CPU {6E1CC97A-B3CB-4E9F-94E0-F264DE0D8298}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6E1CC97A-B3CB-4E9F-94E0-F264DE0D8298}.Debug|Any CPU.Build.0 = Debug|Any CPU {6E1CC97A-B3CB-4E9F-94E0-F264DE0D8298}.Release|Any CPU.ActiveCfg = Release|Any CPU {6E1CC97A-B3CB-4E9F-94E0-F264DE0D8298}.Release|Any CPU.Build.0 = Release|Any CPU {8E5E8A68-0B9D-4A6A-B325-730C64603FDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8E5E8A68-0B9D-4A6A-B325-730C64603FDF}.Debug|Any CPU.Build.0 = Debug|Any CPU {8E5E8A68-0B9D-4A6A-B325-730C64603FDF}.Release|Any CPU.ActiveCfg = Release|Any CPU {8E5E8A68-0B9D-4A6A-B325-730C64603FDF}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {784CEA1D-A890-4625-B0C1-72294A6B4803} EndGlobalSection EndGlobal WPFProject/packages.config
File was renamed from packages.config @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="AIStudio.Wpf.Controls" version="1.2.2" targetFramework="net472" /> <package id="gong-wpf-dragdrop" version="3.2.1" targetFramework="net472" /> <package id="HandyControl" version="3.4.0" targetFramework="net472" /> <package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.39" targetFramework="net472" /> <package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" /> <package id="System.IO" version="4.3.0" targetFramework="net472" /> <package id="System.Net.Http" version="4.3.4" targetFramework="net472" /> <package id="System.Runtime" version="4.3.0" targetFramework="net472" /> <package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" /> <package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" /> <package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" /> <package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" /> <package id="WPF.MDI" version="1.1.4" targetFramework="net472" /> <?xml version="1.0" encoding="utf-8"?> <packages> <package id="AIStudio.Wpf.Controls" version="1.2.2" targetFramework="net472" /> <package id="gong-wpf-dragdrop" version="3.2.1" targetFramework="net472" /> <package id="HandyControl" version="3.4.0" targetFramework="net472" /> <package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.39" targetFramework="net472" /> <package id="Newtonsoft.Json" version="13.0.1" targetFramework="net472" /> <package id="System.IO" version="4.3.0" targetFramework="net472" /> <package id="System.Net.Http" version="4.3.4" targetFramework="net472" /> <package id="System.Runtime" version="4.3.0" targetFramework="net472" /> <package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" /> <package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" /> <package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" /> <package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" /> <package id="WPF.MDI" version="1.1.4" targetFramework="net472" /> </packages> WPFProject/test.xml
File was renamed from test.xml @@ -1,65 +1,65 @@ <?xml version="1.0" encoding="utf-16"?> <ArrayOfProgram xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Program> <Name>123</Name> <Sequences> <Sequence> <Name>S123</Name> <Steps> <Step> <Index>0</Index> <Name>000</Name> </Step> <Step> <Index>0</Index> <Name>111</Name> </Step> </Steps> </Sequence> <Sequence> <Name>S223</Name> <Steps> <Step> <Index>0</Index> <Name>000</Name> </Step> <Step> <Index>0</Index> <Name>111</Name> </Step> </Steps> </Sequence> </Sequences> </Program> <Program> <Name>223</Name> <Sequences> <Sequence> <Name>D123</Name> <Steps> <Step> <Index>0</Index> <Name>000</Name> </Step> <Step> <Index>0</Index> <Name>111</Name> </Step> </Steps> </Sequence> <Sequence> <Name>D223</Name> <Steps> <Step> <Index>0</Index> <Name>000</Name> </Step> <Step> <Index>0</Index> <Name>111</Name> </Step> </Steps> </Sequence> </Sequences> </Program> <?xml version="1.0" encoding="utf-16"?> <ArrayOfProgram xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Program> <Name>123</Name> <Sequences> <Sequence> <Name>S123</Name> <Steps> <Step> <Index>0</Index> <Name>000</Name> </Step> <Step> <Index>0</Index> <Name>111</Name> </Step> </Steps> </Sequence> <Sequence> <Name>S223</Name> <Steps> <Step> <Index>0</Index> <Name>000</Name> </Step> <Step> <Index>0</Index> <Name>111</Name> </Step> </Steps> </Sequence> </Sequences> </Program> <Program> <Name>223</Name> <Sequences> <Sequence> <Name>D123</Name> <Steps> <Step> <Index>0</Index> <Name>000</Name> </Step> <Step> <Index>0</Index> <Name>111</Name> </Step> </Steps> </Sequence> <Sequence> <Name>D223</Name> <Steps> <Step> <Index>0</Index> <Name>000</Name> </Step> <Step> <Index>0</Index> <Name>111</Name> </Step> </Steps> </Sequence> </Sequences> </Program> </ArrayOfProgram>