/// <summary> /// 把当前模型的内容,保存到某个指定的 xml 文件。 /// </summary> /// <param name="odmlFile"></param> public static void SaveDocument(this ModelingDesigner designer, string odmlFile) { var doc = designer.GetDocument(); var xml = doc.ToXml(); File.WriteAllText(odmlFile, xml); }
/// <summary> /// 让设计器加载指定的文档对象 /// </summary> /// <param name="designer"></param> /// <param name="document"></param> public static void BindDocument(this ModelingDesigner designer, ODMLDocument document) { DocumentBinder.BindDocument(designer, document); //绑定新的文档时,需要清空文件路径。 designer.ClearValue(CurrentOdmlFileProperty); }
protected override void ExecuteCore(ModelingDesigner designer) { var selectedItems = designer.SelectedItems.ToArray(); foreach (var item in selectedItems) { if (item.Kind == DesignerComponentKind.Block) { designer.Blocks.Remove(item as BlockControl); } } //先删除所有的块后,如果还剩下选择的连接没有移除的话,说明用户想删除某个连接对应的关系,这时需要进行提示。 selectedItems = designer.SelectedItems.ToArray(); if (selectedItems.All(c => c.Kind == DesignerComponentKind.Relation)) { var res = MessageBox.Show("确定删除关系?", "确认删除", MessageBoxButton.YesNo); if (res != MessageBoxResult.Yes) { return; } } foreach (var item in selectedItems) { designer.Relations.Remove(item as BlockRelation); } }
/// <summary> /// 加载某个 xml 文件。 /// </summary> /// <param name="odmlFile"></param> public static void LoadDocument(this ModelingDesigner designer, string odmlFile) { var xml = File.ReadAllText(odmlFile); var doc = string.IsNullOrEmpty(xml) ? new ODMLDocument() : ODMLDocument.Parse(xml); DocumentBinder.BindDocument(designer, doc); SetCurrentOdmlFile(designer, odmlFile); }
protected override void ExecuteCore(ModelingDesigner designer) { var file = ModelingDesignerExtension.GetCurrentOdmlFile(designer); if (file != null) { designer.LoadDocument(file); } }
internal static void BindDocument(ModelingDesigner designer, ODMLDocument document) { var binder = new DocumentBinder { _designer = designer, _document = document }; binder.BindDocument(); }
protected override void ExecuteCore(ModelingDesigner designer) { foreach (var item in designer.SelectedItems) { if (item.Kind == DesignerComponentKind.Relation) { var relation = item as BlockRelation; relation.Hidden = !relation.Hidden; } } }
protected override void ExecuteCore(ModelingDesigner designer) { var selectedItems = designer.SelectedItems.ToArray(); foreach (var item in selectedItems) { if (item.Kind == DesignerComponentKind.Block) { designer.Blocks.Remove(item as BlockControl); } } }
protected override void ExecuteCore(ModelingDesigner designer) { var dialog = new OpenFileDialog { Filter = "Rafy Domain Mackup File (*.odml)|*.odml" }; var res = dialog.ShowDialog(); if (res == true) { designer.LoadDocument(dialog.FileName); } }
///// <summary> ///// 让设计器加载指定的文档对象 ///// </summary> ///// <param name="designer"></param> ///// <param name="document"></param> //public static void LoadDocument(this ModelingDesigner designer, ODMLDocument document) //{ // DocumentHelper.LoadDocument(designer, document); // designer.ClearValue(CurrentOdmlFileProperty); //} /// <summary> /// 获取目前绑定在设计器中的文档对象 /// </summary> /// <param name="designer"></param> /// <returns></returns> public static ODMLDocument GetDocument(this ModelingDesigner designer) { var doc = designer.DataContext as ODMLDocument; if (doc == null) { doc = new ODMLDocument(); BindDocument(designer, doc); } return(doc); //return DocumentHelper.GetDocument(designer); }
internal static CommandBinding CreateCommandBinding(ModelingDesigner designer, WPFDesignerCommand cmd) { var adpater = new WPFCommandAdapter(cmd, designer); var wpfCmd = cmd.GetWPFCommand(); var binding = new CommandBinding(wpfCmd); binding.Executed += adpater.binding_Executed; binding.CanExecute += adpater.binding_CanExecute; return(binding); }
/// <summary> /// 为设计器绑定指定的命令到指定的元素中。 /// </summary> /// <typeparam name="TCommand"></typeparam> /// <param name="designer"></param> /// <param name="context">如果没有指定上下文,则使用 designer 作为上下文。</param> public static void Bind <TCommand>(ModelingDesigner designer, UIElement context = null) where TCommand : WPFDesignerCommand, new() { var command = new TCommand(); if (context == null) { context = designer; } var binding = WPFCommandAdapter.CreateCommandBinding(designer, command); context.CommandBindings.Add(binding); }
protected override void ExecuteCore(ModelingDesigner designer) { var file = ModelingDesignerExtension.GetCurrentOdmlFile(designer); if (file == null) { var dialog = new SaveFileDialog { Filter = "Rafy Domain Mackup File (*.odml)|*.odml" }; var res = dialog.ShowDialog(); if (res != true) { return; } file = dialog.FileName; } designer.SaveDocument(file); }
public EditorProperties(EditorPane editor) { _editor = editor; _designer = editor.Designer; }
protected override void ExecuteCore(ModelingDesigner designer) { designer.SelectAll(); }
private static bool GetIsReBinding(ModelingDesigner element) { return((bool)element.GetValue(IsReBindingProperty)); }
private static void SetCurrentOdmlFile(ModelingDesigner element, string value) { element.SetValue(CurrentOdmlFileProperty, value); }
/// <summary> /// 检查设计器状态,返回当前是否可执行本命令。 /// </summary> /// <param name="designer"></param> /// <returns></returns> protected virtual bool CanExecuteCore(ModelingDesigner designer) { return(true); }
internal WPFCommandAdapter(WPFDesignerCommand cmd, ModelingDesigner designer) { _cmd = cmd; _designer = designer; }
protected override void ExecuteCore(ModelingDesigner designer) { designer.ShowHiddenRelations = !designer.ShowHiddenRelations; }
/// <summary> /// 检查设计器状态,返回当前是否可执行本命令。 /// </summary> /// <param name="designer"></param> /// <returns></returns> public bool CanExecute(ModelingDesigner designer) { return(this.CanExecuteCore(designer)); }
/// <summary> /// 执行本命令。 /// </summary> /// <param name="designer"></param> public void Execute(ModelingDesigner designer) { this.ExecuteCore(designer); }
private static void SetIsReBinding(ModelingDesigner element, bool value) { element.SetValue(IsReBindingProperty, value); }
/// <summary> /// 执行本命令。 /// </summary> /// <param name="designer"></param> protected abstract void ExecuteCore(ModelingDesigner designer);
internal static string GetCurrentOdmlFile(ModelingDesigner element) { return((string)element.GetValue(CurrentOdmlFileProperty)); }