diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml.cs index aae4232..f85da41 100644 --- a/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/MainWindow.xaml.cs @@ -58,7 +58,8 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo new MenuItemViewModel(){Title = "Svg"}, new MenuItemViewModel(){Title = "CustomDefinedNode"}, new MenuItemViewModel(){Title = "PortlessLinks"}, - new MenuItemViewModel(){Title = "GradientNode"}, + new MenuItemViewModel(){Title = "GradientNode"}, + new MenuItemViewModel(){Title = "Rotate" }, } }, new MenuItemViewModel(){Title = "Links", @@ -72,7 +73,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo new MenuItemViewModel(){Title = "PathGenerators"}, } }, - new MenuItemViewModel(){Title = "Ports", + new MenuItemViewModel(){Title = "Ports", Children=new List { new MenuItemViewModel(){Title = "ColoredPort"}, @@ -86,6 +87,16 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo new MenuItemViewModel(){Title = "CustomDefinedGroup"}, new MenuItemViewModel(){Title = "CustomShortcutGroup"}, } + }, + new MenuItemViewModel(){Title = "Texts", + Children=new List + { + new MenuItemViewModel(){Title = "Text"}, + new MenuItemViewModel(){Title = "Alignment"}, + new MenuItemViewModel(){Title = "FontSize"}, + new MenuItemViewModel(){Title = "ColorText"}, + new MenuItemViewModel(){Title = "OutlineText"}, + } }, new MenuItemViewModel(){Title = "Customization", Children=new List diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Nodes/RotateViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Nodes/RotateViewModel.cs new file mode 100644 index 0000000..52fdd35 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Nodes/RotateViewModel.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels.Nodes +{ + class RotateViewModel : BaseViewModel + { + public RotateViewModel() + { + Title = "Rotate"; + Info = "A simple example of AIStudio.Wpf.DiagramDesigner."; + + DiagramViewModel = new DiagramViewModel(); + DiagramViewModel.PageSizeType = PageSizeType.Custom; + DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); + DiagramViewModel.ColorViewModel = new ColorViewModel(); + DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange; + + DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" }; + node1.ShowRotate = true; + node1.Angle = 45; + DiagramViewModel.DirectAddItemCommand.Execute(node1); + + DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" }; + node2.ShowRotate = true; + node2.ScaleX = 1.5; + node2.ScaleY = 1.5; + DiagramViewModel.DirectAddItemCommand.Execute(node2); + + DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" }; + node3.ShowRotate = true; + node3.ScaleX = -1; + node3.ScaleY = -1; + DiagramViewModel.DirectAddItemCommand.Execute(node3); + + ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); + DiagramViewModel.DirectAddItemCommand.Execute(connector1); + + ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); + DiagramViewModel.DirectAddItemCommand.Execute(connector2); + + DiagramViewModel.ClearSelectedItemsCommand.Execute(null); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/AlignmentViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/AlignmentViewModel.cs new file mode 100644 index 0000000..a016f07 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/AlignmentViewModel.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels +{ + class AlignmentViewModel : BaseViewModel + { + public AlignmentViewModel() + { + Title = "Text Alignment"; + Info = "A text node of AIStudio.Wpf.DiagramDesigner."; + + DiagramViewModel = new DiagramViewModel(); + DiagramViewModel.PageSizeType = PageSizeType.Custom; + DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); + DiagramViewModel.ColorViewModel = new ColorViewModel(); + + TextDesignerItemViewModel node1 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, ItemWidth = 230, Text = "竹外桃花三两枝,春江水暖鸭先知。\r\n蒌蒿满地芦芽短,正是河豚欲上时。" }; + node1.FontViewModel.HorizontalAlignment = HorizontalAlignment.Left; + node1.FontViewModel.VerticalAlignment = VerticalAlignment.Top; + DiagramViewModel.DirectAddItemCommand.Execute(node1); + + TextDesignerItemViewModel node2 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, ItemWidth = 200, Text = "解落三秋叶,能开二月花。\r\n过江千尺浪,入竹万竿斜。" }; + node2.FontViewModel.HorizontalAlignment = HorizontalAlignment.Right; + node2.FontViewModel.VerticalAlignment = VerticalAlignment.Top; + DiagramViewModel.DirectAddItemCommand.Execute(node2); + + TextDesignerItemViewModel node3 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 150, ItemWidth = 200, Text = "一节复一节,千枝攒万叶。\r\n我自不开花,免撩蜂与蝶。" }; + node3.FontViewModel.HorizontalAlignment = HorizontalAlignment.Left; + node3.FontViewModel.VerticalAlignment = VerticalAlignment.Bottom; + DiagramViewModel.DirectAddItemCommand.Execute(node3); + + TextDesignerItemViewModel node4 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 150, ItemWidth = 200, Text = "独坐幽篁里,弹琴复长啸。\r\n深林人不知,明月来相照。" }; + node4.FontViewModel.HorizontalAlignment = HorizontalAlignment.Right; + node4.FontViewModel.VerticalAlignment = VerticalAlignment.Bottom; + DiagramViewModel.DirectAddItemCommand.Execute(node4); + + DiagramViewModel.ClearSelectedItemsCommand.Execute(null); + } + } +} \ No newline at end of file diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/ColorTextViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/ColorTextViewModel.cs new file mode 100644 index 0000000..357f902 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/ColorTextViewModel.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels.Texts +{ + class ColorTextViewModel : BaseViewModel + { + public ColorTextViewModel() + { + Title = "Color Text"; + Info = "A text node of AIStudio.Wpf.DiagramDesigner."; + + DiagramViewModel = new DiagramViewModel(); + DiagramViewModel.PageSizeType = PageSizeType.Custom; + DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); + DiagramViewModel.ColorViewModel = new ColorViewModel(); + + TextDesignerItemViewModel node1 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, ItemWidth = 230, Text = "竹外桃花三两枝,春江水暖鸭先知。\r\n蒌蒿满地芦芽短,正是河豚欲上时。" }; + node1.FontViewModel.FontColor = System.Windows.Media.Colors.Red; + DiagramViewModel.DirectAddItemCommand.Execute(node1); + + TextDesignerItemViewModel node2 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, ItemWidth = 200, Text = "解落三秋叶,能开二月花。\r\n过江千尺浪,入竹万竿斜。" }; + node2.FontViewModel.TextEffectColor = System.Windows.Media.Colors.Orange; + DiagramViewModel.DirectAddItemCommand.Execute(node2); + + TextDesignerItemViewModel node3 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 150, ItemWidth = 200, ItemHeight=100, Text = "一节复一节,千枝攒万叶。\r\n我自不开花,免撩蜂与蝶。\r\n\r\n暂未实现,敬请期待" }; + node3.FontViewModel.HighlightColor = System.Windows.Media.Colors.Green; + DiagramViewModel.DirectAddItemCommand.Execute(node3); + + TextDesignerItemViewModel node4 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 150, ItemWidth = 200, Text = "独坐幽篁里,弹琴复长啸。\r\n深林人不知,明月来相照。" }; + node4.FontViewModel.FontColor = System.Windows.Media.Colors.White; + node4.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Blue; + DiagramViewModel.DirectAddItemCommand.Execute(node4); + + DiagramViewModel.ClearSelectedItemsCommand.Execute(null); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/FontSizeViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/FontSizeViewModel.cs new file mode 100644 index 0000000..f44f410 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/FontSizeViewModel.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels.Texts +{ + class FontSizeViewModel : BaseViewModel + { + public FontSizeViewModel() + { + Title = "Text Alignment"; + Info = "A text node of AIStudio.Wpf.DiagramDesigner."; + + DiagramViewModel = new DiagramViewModel(); + DiagramViewModel.PageSizeType = PageSizeType.Custom; + DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); + DiagramViewModel.ColorViewModel = new ColorViewModel(); + + TextDesignerItemViewModel node1 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 30, Top = 50, ItemWidth = 260, Text = "竹外桃花三两枝,春江水暖鸭先知。\r\n蒌蒿满地芦芽短,正是河豚欲上时。" }; + node1.FontViewModel.FontSize = 15; + DiagramViewModel.DirectAddItemCommand.Execute(node1); + + TextDesignerItemViewModel node2 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, ItemWidth = 200, Text = "解落三秋叶,能开二月花。\r\n过江千尺浪,入竹万竿斜。" }; + node2.FontViewModel.FontWeight = FontWeights.Bold; + DiagramViewModel.DirectAddItemCommand.Execute(node2); + + TextDesignerItemViewModel node3 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 150, ItemWidth = 200, Text = "一节复一节,千枝攒万叶。\r\n我自不开花,免撩蜂与蝶。" }; + node3.FontViewModel.FontStretch = FontStretches.Expanded; + DiagramViewModel.DirectAddItemCommand.Execute(node3); + + TextDesignerItemViewModel node4 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 150, ItemWidth = 200, Text = "独坐幽篁里,弹琴复长啸。\r\n深林人不知,明月来相照。" }; + node4.FontViewModel.FontFamily = "宋体"; + DiagramViewModel.DirectAddItemCommand.Execute(node4); + + DiagramViewModel.ClearSelectedItemsCommand.Execute(null); + } + } +} \ No newline at end of file diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/OutlineTextViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/OutlineTextViewModel.cs new file mode 100644 index 0000000..0fbc93e --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/OutlineTextViewModel.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows; +using AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels.Texts +{ + class OutlineTextViewModel : BaseViewModel + { + public OutlineTextViewModel() + { + Title = "Text"; + Info = "A text node of AIStudio.Wpf.DiagramDesigner."; + + DiagramViewModel = new DiagramViewModel(); + DiagramViewModel.PageSizeType = PageSizeType.Custom; + DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); + DiagramViewModel.ColorViewModel = new ColorViewModel(); + + OutLineTextDesignerItemViewModel node1 = new OutLineTextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, ItemWidth = 600, ItemHeight = 100, Text = "竹外桃花三两枝,春江水暖鸭先知。\r\n蒌蒿满地芦芽短,正是河豚欲上时。" }; + DiagramViewModel.DirectAddItemCommand.Execute(node1); + + OutLineTextDesignerItemViewModel node2 = new OutLineTextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 160, ItemWidth = 500, ItemHeight = 100, Text = "解落三秋叶,能开二月花。\r\n过江千尺浪,入竹万竿斜。" }; + DiagramViewModel.DirectAddItemCommand.Execute(node2); + + OutLineTextDesignerItemViewModel node3 = new OutLineTextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 270, ItemWidth = 500, ItemHeight = 100, Text = "一节复一节,千枝攒万叶。\r\n我自不开花,免撩蜂与蝶。" }; + DiagramViewModel.DirectAddItemCommand.Execute(node3); + + OutLineTextDesignerItemViewModel node4 = new OutLineTextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 380, ItemWidth = 500, ItemHeight = 100, Text = "独坐幽篁里,弹琴复长啸。\r\n深林人不知,明月来相照。" }; + DiagramViewModel.DirectAddItemCommand.Execute(node4); + + DiagramViewModel.ClearSelectedItemsCommand.Execute(null); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/TextViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/TextViewModel.cs new file mode 100644 index 0000000..4109a5d --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Texts/TextViewModel.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels.Texts +{ + class TextViewModel : BaseViewModel + { + public TextViewModel() + { + Title = "Text"; + Info = "A text node of AIStudio.Wpf.DiagramDesigner."; + + DiagramViewModel = new DiagramViewModel(); + DiagramViewModel.PageSizeType = PageSizeType.Custom; + DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); + DiagramViewModel.ColorViewModel = new ColorViewModel(); + + TextDesignerItemViewModel node1 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, ItemWidth=230, Text = "竹外桃花三两枝,春江水暖鸭先知。\r\n蒌蒿满地芦芽短,正是河豚欲上时。" }; + DiagramViewModel.DirectAddItemCommand.Execute(node1); + + TextDesignerItemViewModel node2 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, ItemWidth = 200, Text = "解落三秋叶,能开二月花。\r\n过江千尺浪,入竹万竿斜。" }; + DiagramViewModel.DirectAddItemCommand.Execute(node2); + + TextDesignerItemViewModel node3 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 150, ItemWidth = 200, Text = "一节复一节,千枝攒万叶。\r\n我自不开花,免撩蜂与蝶。" }; + DiagramViewModel.DirectAddItemCommand.Execute(node3); + + TextDesignerItemViewModel node4 = new TextDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 150, ItemWidth = 200, Text = "独坐幽篁里,弹琴复长啸。\r\n深林人不知,明月来相照。" }; + DiagramViewModel.DirectAddItemCommand.Execute(node4); + + DiagramViewModel.ClearSelectedItemsCommand.Execute(null); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Nodes/RotateView.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Nodes/RotateView.xaml new file mode 100644 index 0000000..8f25d19 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Nodes/RotateView.xaml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Nodes/RotateView.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Nodes/RotateView.xaml.cs new file mode 100644 index 0000000..8b841fc --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Nodes/RotateView.xaml.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +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; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.Views +{ + /// + /// RotateView.xaml 的交互逻辑 + /// + public partial class RotateView : UserControl + { + public RotateView() + { + InitializeComponent(); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/AlignmentView.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/AlignmentView.xaml new file mode 100644 index 0000000..a4b4cdf --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/AlignmentView.xaml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/AlignmentView.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/AlignmentView.xaml.cs new file mode 100644 index 0000000..4b27f6f --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/AlignmentView.xaml.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +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; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.Views +{ + /// + /// AlignmentView.xaml 的交互逻辑 + /// + public partial class AlignmentView : UserControl + { + public AlignmentView() + { + InitializeComponent(); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/ColorTextView.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/ColorTextView.xaml new file mode 100644 index 0000000..519fae7 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/ColorTextView.xaml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/ColorTextView.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/ColorTextView.xaml.cs new file mode 100644 index 0000000..356fae8 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/ColorTextView.xaml.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +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; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.Views +{ + /// + /// ColorTextView.xaml 的交互逻辑 + /// + public partial class ColorTextView : UserControl + { + public ColorTextView() + { + InitializeComponent(); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/FontSizeView.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/FontSizeView.xaml new file mode 100644 index 0000000..7a2e90c --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/FontSizeView.xaml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/FontSizeView.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/FontSizeView.xaml.cs new file mode 100644 index 0000000..0aa429c --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/FontSizeView.xaml.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +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; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.Views +{ + /// + /// FontSizeView.xaml 的交互逻辑 + /// + public partial class FontSizeView : UserControl + { + public FontSizeView() + { + InitializeComponent(); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/OutlineTextView.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/OutlineTextView.xaml new file mode 100644 index 0000000..9b18618 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/OutlineTextView.xaml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/OutlineTextView.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/OutlineTextView.xaml.cs new file mode 100644 index 0000000..36f27d2 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/OutlineTextView.xaml.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +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; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.Views +{ + /// + /// OutlineTextView.xaml 的交互逻辑 + /// + public partial class OutlineTextView : UserControl + { + public OutlineTextView() + { + InitializeComponent(); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/TextView.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/TextView.xaml new file mode 100644 index 0000000..ab69d33 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/TextView.xaml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/TextView.xaml.cs b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/TextView.xaml.cs new file mode 100644 index 0000000..5923353 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Demo/Views/Texts/TextView.xaml.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +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; + +namespace AIStudio.Wpf.DiagramDesigner.Demo.Views +{ + /// + /// TextView.xaml 的交互逻辑 + /// + public partial class TextView : UserControl + { + public TextView() + { + InitializeComponent(); + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml.cs b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml.cs index 95d1526..9f68b1f 100644 --- a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml.cs +++ b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml.cs @@ -94,7 +94,24 @@ namespace AIStudio.Wpf.DiagramDesigner { base.OnPreviewKeyDown(e); - + e.Handled = DiagramViewModel.ExecuteShortcut(e); + } + + protected override void OnPreviewMouseWheel(MouseWheelEventArgs e) + { + base.OnPreviewMouseWheel(e); + + if (Keyboard.IsKeyDown(Key.LeftCtrl) == false + && Keyboard.IsKeyDown(Key.RightCtrl) == false) + { + return; + } + + var newZoomValue = DiagramViewModel.ZoomValue + (e.Delta > 0 ? 0.1 : -0.1); + + DiagramViewModel.ZoomValue = Math.Max(Math.Min(newZoomValue, 10), 0.5); + + e.Handled = true; } } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs index fa132ed..dae9ff6 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs @@ -239,7 +239,10 @@ namespace AIStudio.Wpf.DiagramDesigner { get; set; } - + double ZoomValue + { + get; set; + } System.Windows.Point CurrentPoint { get; set; @@ -271,7 +274,7 @@ namespace AIStudio.Wpf.DiagramDesigner DiagramOption DiagramOption { get; set; - } + } #endregion //用于wpf大小与物理像素之间转换 double ScreenScale