本文整理汇总了C#中Dynamo.Core.UndoRedoRecorder.BeginActionGroup方法的典型用法代码示例。如果您正苦于以下问题:C# UndoRedoRecorder.BeginActionGroup方法的具体用法?C# UndoRedoRecorder.BeginActionGroup怎么用?C# UndoRedoRecorder.BeginActionGroup使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Dynamo.Core.UndoRedoRecorder
的用法示例。
在下文中一共展示了UndoRedoRecorder.BeginActionGroup方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RecordModelsForModification
/// <summary>
/// TODO(Ben): This method is exposed this way for external codes (e.g.
/// the DragCanvas) to record models before they are modified. This is
/// by no means ideal. The ideal case of course is for ALL codes that
/// end up modifying models to be folded back into WorkspaceViewModel in
/// the form of commands. These commands then internally record those
/// affected models before updating them. We need this method to be gone
/// sooner than later.
/// </summary>
/// <param name="models">The models to be recorded for undo.</param>
/// <param name="recorder"></param>
internal static void RecordModelsForModification(List<ModelBase> models, UndoRedoRecorder recorder)
{
if (null == recorder)
return;
if (!ShouldProceedWithRecording(models))
return;
using (recorder.BeginActionGroup())
{
foreach (var model in models)
recorder.RecordModificationForUndo(model);
}
}
示例2: RecordModelsForUndo
internal static void RecordModelsForUndo(Dictionary<ModelBase, UndoRedoRecorder.UserAction> models, UndoRedoRecorder recorder)
{
if (null == recorder)
return;
if (!ShouldProceedWithRecording(models))
return;
using (recorder.BeginActionGroup())
{
foreach (var modelPair in models)
{
switch (modelPair.Value)
{
case UndoRedoRecorder.UserAction.Creation:
recorder.RecordCreationForUndo(modelPair.Key);
break;
case UndoRedoRecorder.UserAction.Deletion:
recorder.RecordDeletionForUndo(modelPair.Key);
break;
case UndoRedoRecorder.UserAction.Modification:
recorder.RecordModificationForUndo(modelPair.Key);
break;
}
}
}
}
示例3: CommitChanges
private void CommitChanges(UndoRedoRecorder recorder)
{
// Code block editor can lose focus in many scenarios (e.g. switching
// of tabs or application), if there has not been any changes, do not
// commit the change.
//
if (!nodeModel.Code.Equals(InnerTextEditor.Text))
{
nodeViewModel.DynamoViewModel.ExecuteCommand(
new DynCmd.UpdateModelValueCommand(
nodeViewModel.WorkspaceViewModel.Model.Guid,
nodeModel.GUID,
"Code", InnerTextEditor.Text));
}
if (createdForNewCodeBlock)
{
// If this editing was started due to a new code block node,
// then by this point there would have been two action groups
// recorded on the undo-stack: one for node creation, and
// another for node editing (as part of ExecuteCommand above).
// Pop off the two action groups...
//
recorder.PopFromUndoGroup(); // Pop off modification action.
// Note that due to various external factors a code block node
// loaded from file may be created empty. In such cases, the
// creation step would not have been recorded (there was no
// explicit creation of the node, it was created from loading
// of a file), and nothing should be popped off of the undo stack.
if (recorder.CanUndo)
recorder.PopFromUndoGroup(); // Pop off creation action.
// ... and record this new node as new creation.
using (recorder.BeginActionGroup())
{
recorder.RecordCreationForUndo(nodeModel);
}
}
}