mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
ZoomBox待完成,还需要调整
This commit is contained in:
@@ -33,7 +33,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
|||||||
|
|
||||||
DiagramViewModels = new ObservableCollection<IDiagramViewModel>()
|
DiagramViewModels = new ObservableCollection<IDiagramViewModel>()
|
||||||
{
|
{
|
||||||
new DiagramViewModel(){Name= "页-1", DiagramType = diagramType},
|
new DiagramViewModel(){Name= "页-1", DiagramType = diagramType, ZoomValue = 0.8},
|
||||||
};
|
};
|
||||||
DiagramViewModel = DiagramViewModels.FirstOrDefault();
|
DiagramViewModel = DiagramViewModels.FirstOrDefault();
|
||||||
|
|
||||||
|
|||||||
@@ -1843,58 +1843,67 @@
|
|||||||
</TabControl.ItemContainerStyle>
|
</TabControl.ItemContainerStyle>
|
||||||
<TabControl.ContentTemplate>
|
<TabControl.ContentTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<ScrollViewer x:Name="designerScrollViewer"
|
<Grid>
|
||||||
|
<ScrollViewer x:Name="designerScrollViewer"
|
||||||
Background="{DynamicResource GrayBrush8}"
|
Background="{DynamicResource GrayBrush8}"
|
||||||
HorizontalScrollBarVisibility="Auto"
|
HorizontalScrollBarVisibility="Auto"
|
||||||
VerticalScrollBarVisibility="Auto">
|
VerticalScrollBarVisibility="Auto">
|
||||||
<DockPanel x:Name="panel">
|
<DockPanel x:Name="panel">
|
||||||
<controls:Ruler x:Name="hruler"
|
<controls:Ruler x:Name="hruler"
|
||||||
Unit="{Binding PageUnit,Converter={StaticResource RulerUnitConverter}}"
|
Unit="{Binding PageUnit,Converter={StaticResource RulerUnitConverter}}"
|
||||||
DockPanel.Dock="Top"
|
DockPanel.Dock="Top"
|
||||||
Margin="21,0,0,0"
|
Margin="21,0,0,0"
|
||||||
Zoom="{Binding ZoomValue}"
|
Zoom="{Binding ZoomValue}"
|
||||||
AutoSize="True"
|
AutoSize="True"
|
||||||
ClipToBounds="True" >
|
ClipToBounds="True" >
|
||||||
<controls:Ruler.CountShift>
|
<controls:Ruler.CountShift>
|
||||||
<MultiBinding Converter="{StaticResource CountShiftConverter}" ConverterParameter="X">
|
<MultiBinding Converter="{StaticResource CountShiftConverter}" ConverterParameter="X">
|
||||||
<Binding ElementName="diagram" Path="." />
|
<Binding ElementName="diagram" Path="." />
|
||||||
<Binding ElementName="diagram" Path="ZoomValue"/>
|
<Binding Path="DelayZoomValue"/>
|
||||||
<Binding Path="PageUnit"/>
|
<Binding Path="PageUnit"/>
|
||||||
<Binding ElementName="designerScrollViewer" Path="ActualWidth"/>
|
<Binding ElementName="designerScrollViewer" Path="ActualWidth"/>
|
||||||
<Binding ElementName="panel" Path="ActualWidth"/>
|
<Binding ElementName="panel" Path="ActualWidth"/>
|
||||||
<Binding ElementName="diagram" Path="ActualWidth"/>
|
<Binding ElementName="diagram" Path="ActualWidth"/>
|
||||||
</MultiBinding>
|
</MultiBinding>
|
||||||
</controls:Ruler.CountShift>
|
</controls:Ruler.CountShift>
|
||||||
</controls:Ruler>
|
</controls:Ruler>
|
||||||
<controls:Ruler x:Name="vruler"
|
<controls:Ruler x:Name="vruler"
|
||||||
Unit="{Binding PageUnit,Converter={StaticResource RulerUnitConverter}}"
|
Unit="{Binding PageUnit,Converter={StaticResource RulerUnitConverter}}"
|
||||||
Marks="Up"
|
Marks="Up"
|
||||||
RenderTransformOrigin="0,0"
|
RenderTransformOrigin="0,0"
|
||||||
AutoSize="True"
|
AutoSize="True"
|
||||||
Zoom="{Binding ZoomValue}"
|
Zoom="{Binding ZoomValue}"
|
||||||
ClipToBounds="True">
|
ClipToBounds="True">
|
||||||
<controls:Ruler.LayoutTransform>
|
<controls:Ruler.LayoutTransform>
|
||||||
<TransformGroup>
|
<TransformGroup>
|
||||||
<ScaleTransform ScaleX="1" ScaleY="1" />
|
<ScaleTransform ScaleX="1" ScaleY="1" />
|
||||||
<SkewTransform AngleX="0" AngleY="0" />
|
<SkewTransform AngleX="0" AngleY="0" />
|
||||||
<RotateTransform Angle="90" />
|
<RotateTransform Angle="90" />
|
||||||
<TranslateTransform X="23" />
|
<TranslateTransform X="23" />
|
||||||
</TransformGroup>
|
</TransformGroup>
|
||||||
</controls:Ruler.LayoutTransform>
|
</controls:Ruler.LayoutTransform>
|
||||||
<controls:Ruler.CountShift>
|
<controls:Ruler.CountShift>
|
||||||
<MultiBinding Converter="{StaticResource CountShiftConverter}" ConverterParameter="Y">
|
<MultiBinding Converter="{StaticResource CountShiftConverter}" ConverterParameter="Y">
|
||||||
<Binding ElementName="diagram" Path="." />
|
<Binding ElementName="diagram" Path="." />
|
||||||
<Binding ElementName="diagram" Path="ZoomValue" />
|
<Binding Path="DelayZoomValue"/>
|
||||||
<Binding Path="PageUnit"/>
|
<Binding Path="PageUnit"/>
|
||||||
<Binding ElementName="designerScrollViewer" Path="ActualHeight"/>
|
<Binding ElementName="designerScrollViewer" Path="ActualHeight"/>
|
||||||
<Binding ElementName="panel" Path="ActualHeight"/>
|
<Binding ElementName="panel" Path="ActualHeight"/>
|
||||||
<Binding ElementName="diagram" Path="ActualHeight"/>
|
<Binding ElementName="diagram" Path="ActualHeight"/>
|
||||||
</MultiBinding>
|
</MultiBinding>
|
||||||
</controls:Ruler.CountShift>
|
</controls:Ruler.CountShift>
|
||||||
</controls:Ruler>
|
</controls:Ruler>
|
||||||
<dd:DiagramControl x:Name="diagram" DataContext="{Binding .}" Margin="50"/>
|
<dd:DiagramControl x:Name="diagram" DataContext="{Binding .}" Margin="50"/>
|
||||||
</DockPanel>
|
</DockPanel>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
|
<!--<dd:ZoomBox x:Name="zoomBox"
|
||||||
|
Width="180"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
VerticalAlignment="Bottom"
|
||||||
|
ScrollViewer="{Binding ElementName=designerScrollViewer}"
|
||||||
|
ZoomValue="{Binding ZoomValue,Mode=TwoWay}"
|
||||||
|
Margin="0,0,5,5" />-->
|
||||||
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</TabControl.ContentTemplate>
|
</TabControl.ContentTemplate>
|
||||||
</TabControl>
|
</TabControl>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Converters
|
|||||||
{
|
{
|
||||||
if (values != null && values.Length > 2)
|
if (values != null && values.Length > 2)
|
||||||
{
|
{
|
||||||
var diagram = values[0] as AIStudio.Wpf.DiagramDesigner.DiagramControl;
|
var diagram = values[0] as FrameworkElement;
|
||||||
var zoomValue = (double)values[1];
|
var zoomValue = (double)values[1];
|
||||||
var pageunit = (PageUnit)values[2];
|
var pageunit = (PageUnit)values[2];
|
||||||
var unit = Unit.Cm;
|
var unit = Unit.Cm;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Windows.Controls;
|
|||||||
using System.Windows.Controls.Primitives;
|
using System.Windows.Controls.Primitives;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
using AIStudio.Wpf.DiagramDesigner.Helpers;
|
||||||
|
|
||||||
namespace AIStudio.Wpf.DiagramDesigner
|
namespace AIStudio.Wpf.DiagramDesigner
|
||||||
{
|
{
|
||||||
@@ -12,7 +13,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
private Thumb zoomThumb;
|
private Thumb zoomThumb;
|
||||||
private Canvas zoomCanvas;
|
private Canvas zoomCanvas;
|
||||||
private Slider zoomSlider;
|
private Slider zoomSlider;
|
||||||
private ScaleTransform scaleTransform;
|
|
||||||
|
|
||||||
#region DPs
|
#region DPs
|
||||||
|
|
||||||
@@ -24,7 +24,24 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static readonly DependencyProperty ScrollViewerProperty =
|
public static readonly DependencyProperty ScrollViewerProperty =
|
||||||
DependencyProperty.Register(nameof(ScrollViewer), typeof(ScrollViewer), typeof(ZoomBox));
|
DependencyProperty.Register(nameof(ScrollViewer), typeof(ScrollViewer), typeof(ZoomBox), new FrameworkPropertyMetadata(null,
|
||||||
|
new PropertyChangedCallback(OnScrollViewerChanged)));
|
||||||
|
|
||||||
|
private static void OnScrollViewerChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||||
|
{
|
||||||
|
ZoomBox target = (ZoomBox)d;
|
||||||
|
ScrollViewer oldvalue = (ScrollViewer)e.OldValue;
|
||||||
|
ScrollViewer newvalue = (ScrollViewer)e.NewValue;
|
||||||
|
target.OnScrollViewerChanged(oldvalue, newvalue);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void OnScrollViewerChanged(ScrollViewer oldvalue, ScrollViewer newvalue)
|
||||||
|
{
|
||||||
|
if (newvalue != null)
|
||||||
|
{
|
||||||
|
DesignerCanvas = VisualHelper.FindChild<DesignerCanvas>(newvalue);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region DesignerCanvas
|
#region DesignerCanvas
|
||||||
@@ -56,20 +73,33 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
if (oldDesignerCanvas != null)
|
if (oldDesignerCanvas != null)
|
||||||
{
|
{
|
||||||
newDesignerCanvas.LayoutUpdated -= new EventHandler(this.DesignerCanvas_LayoutUpdated);
|
oldDesignerCanvas.LayoutUpdated -= new EventHandler(this.DesignerCanvas_LayoutUpdated);
|
||||||
newDesignerCanvas.MouseWheel -= new MouseWheelEventHandler(this.DesignerCanvas_MouseWheel);
|
oldDesignerCanvas.MouseWheel -= new MouseWheelEventHandler(this.DesignerCanvas_MouseWheel);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newDesignerCanvas != null)
|
if (newDesignerCanvas != null)
|
||||||
{
|
{
|
||||||
newDesignerCanvas.LayoutUpdated += new EventHandler(this.DesignerCanvas_LayoutUpdated);
|
newDesignerCanvas.LayoutUpdated += new EventHandler(this.DesignerCanvas_LayoutUpdated);
|
||||||
newDesignerCanvas.MouseWheel += new MouseWheelEventHandler(this.DesignerCanvas_MouseWheel);
|
newDesignerCanvas.MouseWheel += new MouseWheelEventHandler(this.DesignerCanvas_MouseWheel);
|
||||||
newDesignerCanvas.LayoutTransform = this.scaleTransform;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public static readonly DependencyProperty ZoomValueProperty =
|
||||||
|
DependencyProperty.Register(nameof(ZoomValue), typeof(double), typeof(ZoomBox), new UIPropertyMetadata(1d));
|
||||||
|
public double ZoomValue
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (double)GetValue(ZoomValueProperty);
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
SetValue(ZoomValueProperty, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public override void OnApplyTemplate()
|
public override void OnApplyTemplate()
|
||||||
@@ -79,6 +109,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
if (this.ScrollViewer == null)
|
if (this.ScrollViewer == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
DesignerCanvas = VisualHelper.FindChild<DesignerCanvas>(this.ScrollViewer);
|
||||||
|
|
||||||
this.zoomThumb = Template.FindName("PART_ZoomThumb", this) as Thumb;
|
this.zoomThumb = Template.FindName("PART_ZoomThumb", this) as Thumb;
|
||||||
if (this.zoomThumb == null)
|
if (this.zoomThumb == null)
|
||||||
throw new Exception("PART_ZoomThumb template is missing!");
|
throw new Exception("PART_ZoomThumb template is missing!");
|
||||||
@@ -93,7 +125,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
this.zoomThumb.DragDelta += new DragDeltaEventHandler(this.Thumb_DragDelta);
|
this.zoomThumb.DragDelta += new DragDeltaEventHandler(this.Thumb_DragDelta);
|
||||||
this.zoomSlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(this.ZoomSlider_ValueChanged);
|
this.zoomSlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(this.ZoomSlider_ValueChanged);
|
||||||
this.scaleTransform = new ScaleTransform();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ZoomSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
private void ZoomSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
|
||||||
@@ -103,8 +134,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
double newVerticalOffset = ((this.ScrollViewer.VerticalOffset + halfViewportHeight) * scale - halfViewportHeight);
|
double newVerticalOffset = ((this.ScrollViewer.VerticalOffset + halfViewportHeight) * scale - halfViewportHeight);
|
||||||
double halfViewportWidth = this.ScrollViewer.ViewportWidth / 2;
|
double halfViewportWidth = this.ScrollViewer.ViewportWidth / 2;
|
||||||
double newHorizontalOffset = ((this.ScrollViewer.HorizontalOffset + halfViewportWidth) * scale - halfViewportWidth);
|
double newHorizontalOffset = ((this.ScrollViewer.HorizontalOffset + halfViewportWidth) * scale - halfViewportWidth);
|
||||||
this.scaleTransform.ScaleX *= scale;
|
|
||||||
this.scaleTransform.ScaleY *= scale;
|
|
||||||
this.ScrollViewer.ScrollToHorizontalOffset(newHorizontalOffset);
|
this.ScrollViewer.ScrollToHorizontalOffset(newHorizontalOffset);
|
||||||
this.ScrollViewer.ScrollToVerticalOffset(newVerticalOffset);
|
this.ScrollViewer.ScrollToVerticalOffset(newVerticalOffset);
|
||||||
}
|
}
|
||||||
@@ -145,8 +174,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
private void InvalidateScale(out double scale, out double xOffset, out double yOffset)
|
private void InvalidateScale(out double scale, out double xOffset, out double yOffset)
|
||||||
{
|
{
|
||||||
double w = DesignerCanvas.ActualWidth * this.scaleTransform.ScaleX;
|
double w = DesignerCanvas.ActualWidth * ZoomValue;
|
||||||
double h = DesignerCanvas.ActualHeight * this.scaleTransform.ScaleY;
|
double h = DesignerCanvas.ActualHeight * ZoomValue;
|
||||||
|
|
||||||
// zoom canvas size
|
// zoom canvas size
|
||||||
double x = this.zoomCanvas.ActualWidth;
|
double x = this.zoomCanvas.ActualWidth;
|
||||||
|
|||||||
@@ -181,7 +181,7 @@
|
|||||||
Name="PART_ZoomCanvas">
|
Name="PART_ZoomCanvas">
|
||||||
<Canvas.Background>
|
<Canvas.Background>
|
||||||
<VisualBrush Stretch="Uniform"
|
<VisualBrush Stretch="Uniform"
|
||||||
Visual="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ScrollViewer.Content}" />
|
Visual="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=DesignerCanvas}" />
|
||||||
</Canvas.Background>
|
</Canvas.Background>
|
||||||
<Thumb Name="PART_ZoomThumb"
|
<Thumb Name="PART_ZoomThumb"
|
||||||
Cursor="SizeAll">
|
Cursor="SizeAll">
|
||||||
@@ -212,12 +212,12 @@
|
|||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
Margin="0"
|
Margin="0"
|
||||||
Ticks="25,50,75,100,125,150,200,300,400,500"
|
Ticks="0.25,0.50,0.75,1,1.25,1.50,2.00,3.00,4.00,5.00"
|
||||||
Minimum="25"
|
Minimum="0.25"
|
||||||
Maximum="500"
|
Maximum="5"
|
||||||
SmallChange="25"
|
SmallChange="0.25"
|
||||||
LargeChange="25"
|
LargeChange="0.25"
|
||||||
Value="100"
|
Value="{Binding ZoomValue,RelativeSource={RelativeSource Mode=TemplatedParent},Mode=TwoWay}"
|
||||||
MinWidth="104"
|
MinWidth="104"
|
||||||
MinHeight="21"
|
MinHeight="21"
|
||||||
IsSnapToTickEnabled="True"
|
IsSnapToTickEnabled="True"
|
||||||
|
|||||||
@@ -293,11 +293,7 @@
|
|||||||
|
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
<UserControl.LayoutTransform>
|
<Border>
|
||||||
<ScaleTransform x:Name="scale" ScaleX="{Binding ZoomValue}" ScaleY="{Binding ZoomValue}" Changed="ScaleTransform_Changed" />
|
|
||||||
</UserControl.LayoutTransform>
|
|
||||||
<Border BorderBrush="LightGray"
|
|
||||||
BorderThickness="0">
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<ItemsControl ItemsSource="{Binding Items}"
|
<ItemsControl ItemsSource="{Binding Items}"
|
||||||
ItemContainerStyleSelector="{x:Static s:DesignerItemsControlItemStyleSelector.Instance}">
|
ItemContainerStyleSelector="{x:Static s:DesignerItemsControlItemStyleSelector.Instance}">
|
||||||
@@ -837,6 +833,9 @@
|
|||||||
GridColor="{Binding GridColor}"
|
GridColor="{Binding GridColor}"
|
||||||
Background="{Binding PageBackground,Converter={StaticResource ColorBrushConverter}}"
|
Background="{Binding PageBackground,Converter={StaticResource ColorBrushConverter}}"
|
||||||
AllowDrop="{Binding AllowDrop}">
|
AllowDrop="{Binding AllowDrop}">
|
||||||
|
<s:DesignerCanvas.LayoutTransform>
|
||||||
|
<ScaleTransform ScaleX="{Binding ZoomValue}" ScaleY="{Binding ZoomValue}" />
|
||||||
|
</s:DesignerCanvas.LayoutTransform>
|
||||||
</s:DesignerCanvas>
|
</s:DesignerCanvas>
|
||||||
</ItemsPanelTemplate>
|
</ItemsPanelTemplate>
|
||||||
</ItemsControl.ItemsPanel>
|
</ItemsControl.ItemsPanel>
|
||||||
|
|||||||
@@ -69,19 +69,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void DesignerCanvas_Loaded(object sender, RoutedEventArgs e)
|
private void DesignerCanvas_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
//DesignerCanvas myDesignerCanvas = sender as DesignerCanvas;
|
//DesignerCanvas myDesignerCanvas = sender as DesignerCanvas;
|
||||||
//zoomBox.DesignerCanvas = myDesignerCanvas;
|
//zoomBox.DesignerCanvas = myDesignerCanvas;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void ScaleTransform_Changed(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
await System.Threading.Tasks.Task.Delay(100);
|
|
||||||
ZoomValue = scale.ScaleX;
|
|
||||||
}
|
|
||||||
|
|
||||||
private IDiagramViewModel DiagramViewModel
|
private IDiagramViewModel DiagramViewModel
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|||||||
@@ -400,6 +400,20 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private double _delayZoomValue = 1;
|
||||||
|
[Browsable(false)]
|
||||||
|
public double DelayZoomValue
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _delayZoomValue;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
SetProperty(ref _delayZoomValue, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private string _name;
|
private string _name;
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public string Name
|
public string Name
|
||||||
@@ -691,6 +705,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
public event DiagramEventHandler Event;
|
public event DiagramEventHandler Event;
|
||||||
|
|
||||||
|
private IDisposable ZoomValueChangedSubscription;
|
||||||
|
|
||||||
public DiagramViewModel()
|
public DiagramViewModel()
|
||||||
{
|
{
|
||||||
CreateNewDiagramCommand = new SimpleCommand(ExecuteEnable, ExecuteCreateNewDiagramCommand);
|
CreateNewDiagramCommand = new SimpleCommand(ExecuteEnable, ExecuteCreateNewDiagramCommand);
|
||||||
@@ -733,6 +749,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
Mediator.Instance.Register(this);
|
Mediator.Instance.Register(this);
|
||||||
|
|
||||||
Items.CollectionChanged += Items_CollectionChanged;
|
Items.CollectionChanged += Items_CollectionChanged;
|
||||||
|
|
||||||
|
ZoomValueChangedSubscription = WhenPropertyChanged.Where(o => o.ToString() == nameof(ZoomValue)).Throttle(TimeSpan.FromMilliseconds(100)).Subscribe(OnZoomValueChanged);//Sample
|
||||||
|
}
|
||||||
|
|
||||||
|
//提供给标尺计算,延迟100ms,等布局改变再计算。
|
||||||
|
private void OnZoomValueChanged(string obj)
|
||||||
|
{
|
||||||
|
DelayZoomValue = ZoomValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DiagramViewModel(DiagramItem diagramItem) : this()
|
public DiagramViewModel(DiagramItem diagramItem) : this()
|
||||||
|
|||||||
@@ -45,6 +45,16 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
|||||||
SetProperty(ref _cornerRadius, value);
|
SetProperty(ref _cornerRadius, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double Spacing
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MindNode> Children
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MindLevel1Node : MindNode
|
public class MindLevel1Node : MindNode
|
||||||
|
|||||||
Reference in New Issue
Block a user