mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 08:10:50 +08:00
颜色,字体,支持redo undo
This commit is contained in:
@@ -29,23 +29,26 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
public SelectableViewModelBase(IDiagramViewModel root)
|
||||
{
|
||||
IsLoaded = false;
|
||||
Init(root, true);
|
||||
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
|
||||
IsLoaded = true;
|
||||
}
|
||||
|
||||
public SelectableViewModelBase(IDiagramViewModel root, SelectableItemBase designer)
|
||||
{
|
||||
IsLoaded = false;
|
||||
Init(root, false);
|
||||
LoadDesignerItemViewModel(designer);
|
||||
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
|
||||
IsLoaded = true;
|
||||
}
|
||||
|
||||
public SelectableViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType)
|
||||
{
|
||||
IsLoaded = false;
|
||||
Init(root, false);
|
||||
SelectableItemBase obj = SerializeHelper.DeserializeObject(serializableItem.SerializableTypeName, serializableItem.SerializableString, serializableType);
|
||||
LoadDesignerItemViewModel(obj);
|
||||
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
|
||||
IsLoaded = true;
|
||||
}
|
||||
|
||||
public virtual SerializableItem ToSerializableItem(string serializableType)
|
||||
@@ -67,7 +70,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
|
||||
protected virtual void Init(IDiagramViewModel root, bool initNew)
|
||||
{
|
||||
{
|
||||
Root = root;
|
||||
|
||||
if (Root?.ColorViewModel != null)
|
||||
@@ -103,6 +106,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
InitNew();
|
||||
}
|
||||
|
||||
this.PropertyChanged -= Item_PropertyChanged;
|
||||
this.PropertyChanged += Item_PropertyChanged;
|
||||
}
|
||||
|
||||
protected virtual void InitNew()
|
||||
@@ -123,6 +129,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
ShapeViewModel = CopyHelper.Mapper(designerbase.SharpItem);
|
||||
}
|
||||
|
||||
protected bool IsLoaded
|
||||
{
|
||||
get;set;
|
||||
}
|
||||
|
||||
public IDiagramViewModel Root
|
||||
{
|
||||
get; set;
|
||||
@@ -299,7 +310,15 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
set
|
||||
{
|
||||
if (_colorViewModel != null)
|
||||
{
|
||||
_colorViewModel.PropertyChanged -= ColorViewModel_PropertyChanged;
|
||||
}
|
||||
SetProperty(ref _colorViewModel, value);
|
||||
if (_colorViewModel != null)
|
||||
{
|
||||
_colorViewModel.PropertyChanged += ColorViewModel_PropertyChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,7 +331,15 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
set
|
||||
{
|
||||
if (_fontViewModel != null)
|
||||
{
|
||||
_fontViewModel.PropertyChanged -= FontViewModel_PropertyChanged;
|
||||
}
|
||||
SetProperty(ref _fontViewModel, value);
|
||||
if (_fontViewModel != null)
|
||||
{
|
||||
_fontViewModel.PropertyChanged += FontViewModel_PropertyChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,7 +352,15 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
set
|
||||
{
|
||||
if (_shapeViewModel != null)
|
||||
{
|
||||
_shapeViewModel.PropertyChanged -= ShapeViewModel_PropertyChanged;
|
||||
}
|
||||
SetProperty(ref _shapeViewModel, value);
|
||||
if (_shapeViewModel != null)
|
||||
{
|
||||
_shapeViewModel.PropertyChanged += ShapeViewModel_PropertyChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,14 +419,38 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return IsReadOnly == false;
|
||||
}
|
||||
|
||||
protected virtual void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false) { return; }
|
||||
}
|
||||
|
||||
protected virtual void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false) { return; }
|
||||
|
||||
if (e.PropertyName == nameof(FontViewModel.FontCase))
|
||||
{
|
||||
RaisePropertyChanged("Text");
|
||||
}
|
||||
|
||||
RaisePropertyChanged(sender, e);
|
||||
}
|
||||
|
||||
protected virtual void ColorViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false) { return; }
|
||||
|
||||
RaisePropertyChanged(sender, e);
|
||||
}
|
||||
|
||||
protected virtual void ShapeViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false) { return; }
|
||||
|
||||
RaisePropertyChanged(sender, e);
|
||||
}
|
||||
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{Id}-{Text}";
|
||||
|
||||
Reference in New Issue
Block a user