From 4c5d535aade539de087d82658ff6023713697dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E7=AB=B9?= Date: Wed, 25 Jan 2023 15:21:20 +0800 Subject: [PATCH] =?UTF-8?q?Demo=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AIStudio.Wpf.Diagram.sln | 10 +- .../AIStudio.Wpf.DiagramDesigner.Demo.csproj | 0 AIStudio.Wpf.DiagramDesigner.Demo/App.xaml | 73 ++++++++ .../App.xaml.cs | 2 +- .../AssemblyInfo.cs | 0 .../MainWindow.xaml | 23 +++ .../MainWindow.xaml.cs | 89 +++++++++ .../ViewModels/DragAndDropViewModel.cs | 7 +- .../ViewModels/FlowchartEditorViewModel.cs | 6 +- .../Views/DragAndDropView.xaml | 75 ++++++++ .../Views/DragAndDropView.xaml.cs | 12 +- .../Views/FlowchartEditorView.xaml | 49 +++++ .../Views/FlowchartEditorView.xaml.cs | 26 +++ AIStudio.Wpf.DiagramDesigner.Test/App.xaml | 19 -- .../MainWindow.xaml | 175 ------------------ .../ViewModels/MainWindowViewModel.cs | 25 --- .../AttachedProperties/IsSelectedProps.cs | 30 --- 17 files changed, 351 insertions(+), 270 deletions(-) rename AIStudio.Wpf.DiagramDesigner.Test/AIStudio.Wpf.DiagramDesigner.Test.csproj => AIStudio.Wpf.DiagramDesigner.Demo/AIStudio.Wpf.DiagramDesigner.Demo.csproj (100%) create mode 100644 AIStudio.Wpf.DiagramDesigner.Demo/App.xaml rename {AIStudio.Wpf.DiagramDesigner.Test => AIStudio.Wpf.DiagramDesigner.Demo}/App.xaml.cs (87%) rename {AIStudio.Wpf.DiagramDesigner.Test => AIStudio.Wpf.DiagramDesigner.Demo}/AssemblyInfo.cs (100%) create mode 100644 AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml create mode 100644 AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml.cs rename AIStudio.Wpf.DiagramDesigner.Test/ViewModels/TabItem1ViewModel.cs => AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/DragAndDropViewModel.cs (90%) rename AIStudio.Wpf.DiagramDesigner.Test/ViewModels/TabItem2ViewModel.cs => AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/FlowchartEditorViewModel.cs (94%) create mode 100644 AIStudio.Wpf.DiagramDesigner.Demo/Views/DragAndDropView.xaml rename AIStudio.Wpf.DiagramDesigner.Test/MainWindow.xaml.cs => AIStudio.Wpf.DiagramDesigner.Demo/Views/DragAndDropView.xaml.cs (58%) create mode 100644 AIStudio.Wpf.DiagramDesigner.Demo/Views/FlowchartEditorView.xaml create mode 100644 AIStudio.Wpf.DiagramDesigner.Demo/Views/FlowchartEditorView.xaml.cs delete mode 100644 AIStudio.Wpf.DiagramDesigner.Test/App.xaml delete mode 100644 AIStudio.Wpf.DiagramDesigner.Test/MainWindow.xaml delete mode 100644 AIStudio.Wpf.DiagramDesigner.Test/ViewModels/MainWindowViewModel.cs delete mode 100644 AIStudio.Wpf.DiagramDesigner/AttachedProperties/IsSelectedProps.cs diff --git a/AIStudio.Wpf.Diagram.sln b/AIStudio.Wpf.Diagram.sln index 0cfd94c..ff57c00 100644 --- a/AIStudio.Wpf.Diagram.sln +++ b/AIStudio.Wpf.Diagram.sln @@ -23,7 +23,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "解决方案项", "解决 Directory.Build.Props = Directory.Build.Props EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AIStudio.Wpf.DiagramDesigner.Test", "AIStudio.Wpf.DiagramDesigner.Test\AIStudio.Wpf.DiagramDesigner.Test.csproj", "{559BBB2C-03DE-4C95-B38F-538F0A275793}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.DiagramDesigner.Demo", "AIStudio.Wpf.DiagramDesigner.Demo\AIStudio.Wpf.DiagramDesigner.Demo.csproj", "{D0467F47-D782-4A84-9AAE-E4A014913AA6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -55,10 +55,10 @@ Global {1E77B64D-B457-4467-A5DB-BB7BA01806D9}.Debug|Any CPU.Build.0 = Debug|Any CPU {1E77B64D-B457-4467-A5DB-BB7BA01806D9}.Release|Any CPU.ActiveCfg = Release|Any CPU {1E77B64D-B457-4467-A5DB-BB7BA01806D9}.Release|Any CPU.Build.0 = Release|Any CPU - {559BBB2C-03DE-4C95-B38F-538F0A275793}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {559BBB2C-03DE-4C95-B38F-538F0A275793}.Debug|Any CPU.Build.0 = Debug|Any CPU - {559BBB2C-03DE-4C95-B38F-538F0A275793}.Release|Any CPU.ActiveCfg = Release|Any CPU - {559BBB2C-03DE-4C95-B38F-538F0A275793}.Release|Any CPU.Build.0 = Release|Any CPU + {D0467F47-D782-4A84-9AAE-E4A014913AA6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D0467F47-D782-4A84-9AAE-E4A014913AA6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D0467F47-D782-4A84-9AAE-E4A014913AA6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D0467F47-D782-4A84-9AAE-E4A014913AA6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AIStudio.Wpf.DiagramDesigner.Test/AIStudio.Wpf.DiagramDesigner.Test.csproj b/AIStudio.Wpf.DiagramDesigner.Demo/AIStudio.Wpf.DiagramDesigner.Demo.csproj similarity index 100% rename from AIStudio.Wpf.DiagramDesigner.Test/AIStudio.Wpf.DiagramDesigner.Test.csproj rename to AIStudio.Wpf.DiagramDesigner.Demo/AIStudio.Wpf.DiagramDesigner.Demo.csproj diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml new file mode 100644 index 0000000..5bc383c --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml @@ -0,0 +1,73 @@ + + + + + + + #FF0078D7 + + #CC0078D7 + + #990078D7 + + #660078D7 + + #330078D7 + #FF086F9E + #FF000000 + #51000000 + #FFFFFFFF + #51FFFFFF + #FF333333 + #FF7F7F7F + #FF9D9D9D + #FFA59F93 + #FFB9B9B9 + #FFCCCCCC + #FFD8D8D9 + #FFE0E0E0 + #5EC9C9C9 + #FFF7F7F7 + #00FFFFFF + #17FFFFFF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Test/App.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml.cs similarity index 87% rename from AIStudio.Wpf.DiagramDesigner.Test/App.xaml.cs rename to AIStudio.Wpf.DiagramDesigner.Demo/App.xaml.cs index eac15b6..5d08948 100644 --- a/AIStudio.Wpf.DiagramDesigner.Test/App.xaml.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Threading.Tasks; using System.Windows; -namespace AIStudio.Wpf.DiagramDesigner.Test +namespace AIStudio.Wpf.DiagramDesigner.Demo { /// /// Interaction logic for App.xaml diff --git a/AIStudio.Wpf.DiagramDesigner.Test/AssemblyInfo.cs b/AIStudio.Wpf.DiagramDesigner.Demo/AssemblyInfo.cs similarity index 100% rename from AIStudio.Wpf.DiagramDesigner.Test/AssemblyInfo.cs rename to AIStudio.Wpf.DiagramDesigner.Demo/AssemblyInfo.cs diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml new file mode 100644 index 0000000..0ecccc6 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml.cs new file mode 100644 index 0000000..4252cfa --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using AIStudio.Wpf.DiagramDesigner.Demo.ViewModels; + +namespace AIStudio.Wpf.DiagramDesigner.Demo +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + #region Identity + private static IDictionary _viewDic; + private static IDictionary _viewModelDic; + + static MainWindow() + { + _viewDic = new Dictionary(); + _viewModelDic = new Dictionary(); + var assembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(x => x.FullName.StartsWith("AIStudio.Wpf.DiagramDesigner.Demo")); + assembly.GetTypes().Where(x => x.Namespace.StartsWith("AIStudio.Wpf.DiagramDesigner.Demo.Views") && x.IsSubclassOf(typeof(UserControl))).ToList().ForEach(x => _viewDic.Add(x.Name.Remove(x.Name.Length - 4), x)); + assembly.GetTypes().Where(x => x.Namespace.StartsWith("AIStudio.Wpf.DiagramDesigner.Demo.ViewModels") && x.Name.Contains("ViewModel")).ToList().ForEach(x => _viewModelDic.Add(x.Name.Remove(x.Name.Length - 9), x)); + } + #endregion + + public MainWindow() + { + InitializeComponent(); + this.Loaded += MainWindow_Loaded; + listbox.ItemsSource = _viewDic.Keys.ToList(); + } + + private void MainWindow_Loaded(object sender, RoutedEventArgs e) + { + ListBox_SelectionChanged(null, null); + } + + private void Button_Click(object sender, RoutedEventArgs e) + { + var button = sender as Button; + var tag = button.Content?.ToString(); + + ShowContent(tag); + } + + private void ShowContent(string tag) + { + if (tag == null) return; + + if (_viewDic.ContainsKey(tag)) + { + var control = Activator.CreateInstance(_viewDic[tag]) as UserControl; + if (_viewModelDic.ContainsKey(tag)) + { + var viewmodel = Activator.CreateInstance(_viewModelDic[tag]); + if (viewmodel != null) + { + control.DataContext = viewmodel; + } + } + ContentControl.Content = control; + } + else + ContentControl.Content = null; + } + + private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (!IsLoaded) + return; + + var tag = listbox.SelectedItem as string; + + ShowContent(tag); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Test/ViewModels/TabItem1ViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/DragAndDropViewModel.cs similarity index 90% rename from AIStudio.Wpf.DiagramDesigner.Test/ViewModels/TabItem1ViewModel.cs rename to AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/DragAndDropViewModel.cs index 177e7b4..3fe9de4 100644 --- a/AIStudio.Wpf.DiagramDesigner.Test/ViewModels/TabItem1ViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/DragAndDropViewModel.cs @@ -6,9 +6,9 @@ using System.Windows; using AIStudio.Wpf.Flowchart; using AIStudio.Wpf.Flowchart.ViewModels; -namespace AIStudio.Wpf.DiagramDesigner.Test.ViewModels +namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels { - public class TabItem1ViewModel: BindableBase + public class DragAndDropViewModel: BindableBase { public ToolBoxViewModel ToolBoxViewModel { @@ -64,7 +64,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Test.ViewModels } } - public TabItem1ViewModel() + public DragAndDropViewModel() { ToolBoxViewModel = new ToolBoxViewModel(); DiagramViewModel = new DiagramViewModel(); @@ -75,7 +75,6 @@ namespace AIStudio.Wpf.DiagramDesigner.Test.ViewModels DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center; DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); - DiagramViewModel.DrawModeViewModel = new DrawModeViewModel() { LineDrawMode = DrawMode.ConnectingLineBoundary }; DiagramViewModel.PropertyChanged += DiagramViewModel_PropertyChanged; } diff --git a/AIStudio.Wpf.DiagramDesigner.Test/ViewModels/TabItem2ViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/FlowchartEditorViewModel.cs similarity index 94% rename from AIStudio.Wpf.DiagramDesigner.Test/ViewModels/TabItem2ViewModel.cs rename to AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/FlowchartEditorViewModel.cs index e8fe342..ba39107 100644 --- a/AIStudio.Wpf.DiagramDesigner.Test/ViewModels/TabItem2ViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/FlowchartEditorViewModel.cs @@ -3,9 +3,9 @@ using System.Collections.Generic; using System.Text; using AIStudio.Wpf.Flowchart; -namespace AIStudio.Wpf.DiagramDesigner.Test.ViewModels +namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels { - public class TabItem2ViewModel : BindableBase + public class FlowchartEditorViewModel : BindableBase { private List _users = new List() { @@ -108,7 +108,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Test.ViewModels get; private set; } - public TabItem2ViewModel() + public FlowchartEditorViewModel() { GetDataCommand = new SimpleCommand(GetDataExcute); SetDataCommand = new SimpleCommand(SetDataExcute); diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/DragAndDropView.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/Views/DragAndDropView.xaml new file mode 100644 index 0000000..08217c7 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/DragAndDropView.xaml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Test/MainWindow.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/Views/DragAndDropView.xaml.cs similarity index 58% rename from AIStudio.Wpf.DiagramDesigner.Test/MainWindow.xaml.cs rename to AIStudio.Wpf.DiagramDesigner.Demo/Views/DragAndDropView.xaml.cs index 19c1e04..242f43f 100644 --- a/AIStudio.Wpf.DiagramDesigner.Test/MainWindow.xaml.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/DragAndDropView.xaml.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; -using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; @@ -12,19 +10,17 @@ using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; -using AIStudio.Wpf.DiagramDesigner.Test.ViewModels; -namespace AIStudio.Wpf.DiagramDesigner.Test +namespace AIStudio.Wpf.DiagramDesigner.Demo.Views { /// - /// Interaction logic for MainWindow.xaml + /// DragAndDropView.xaml 的交互逻辑 /// - public partial class MainWindow : Window + public partial class DragAndDropView : UserControl { - public MainWindow() + public DragAndDropView() { InitializeComponent(); - this.DataContext = new MainWindowViewModel(); } } } diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/FlowchartEditorView.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/Views/FlowchartEditorView.xaml new file mode 100644 index 0000000..1e29b3e --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/FlowchartEditorView.xaml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + +