ModelEditingScope 类

[本文档仅供预览,在以后的发行版中可能会发生更改。包含的空白主题用作占位符。]

表示对编辑存储区的一组更改。

继承层次结构

System.Object
  Microsoft.Windows.Design.Model.ModelEditingScope

命名空间:  Microsoft.Windows.Design.Model
程序集:  Microsoft.Windows.Design.Interaction(在 Microsoft.Windows.Design.Interaction.dll 中)

语法

声明
Public MustInherit Class ModelEditingScope _
    Implements IDisposable
public abstract class ModelEditingScope : IDisposable
public ref class ModelEditingScope abstract : IDisposable
[<AbstractClass>]
type ModelEditingScope =  
    class
        interface IDisposable
    end
public abstract class ModelEditingScope implements IDisposable

ModelEditingScope 类型公开以下成员。

构造函数

  名称 说明
受保护的方法 ModelEditingScope 初始化 ModelEditingScope 类的新实例。

页首

属性

  名称 说明
公共属性 Description 获取或设置该组的说明。

页首

方法

  名称 说明
受保护的方法 CanComplete 确定是否可以调用 OnComplete 方法,或者是否应还原更改。
公共方法 Complete 完成编辑范围。
公共方法 Dispose() 释放由 ModelEditingScope 使用的所有资源。
受保护的方法 Dispose(Boolean) 释放 ModelEditingScope 类使用的非托管资源,并可以选择释放托管资源。
公共方法 Equals 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
受保护的方法 Finalize 在完成过程中调用以中止该组。 (重写 Object.Finalize()。)
公共方法 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
受保护的方法 OnComplete 执行编辑范围的实际完成操作。
受保护的方法 OnRevert 执行编辑范围的实际还原操作。
公共方法 Revert 放弃在编辑范围内所做的更改。
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)
公共方法 Update 执行视图的同步刷新。

页首

备注

更改组是事务性的。 可以将在一个编辑范围内所做的更改作为一个单元提交或中止。

编辑范围提交后,编辑存储区将采用其中发生的所有更改,并将这些更改应用于模型。 在调用 Complete 方法之前,如果调用了编辑范围的 Revert 方法或释放了编辑范围,则该编辑范围将改为反转对基础对象所做的更改,并会从编辑存储区中重新应用状态。 这为撤消机制奠定了坚实的基础。

请始终将编辑范围包装在 using 语句或 try/finally 块中。 如果引发了异常,则在对 Dispose 方法的调用中将中止所做的更改。

示例

' The SetHeightAndWidth utility method sets the Height and Width
' properties through the model and commits the change.
Private Sub SetHeightAndWidth(ByVal [auto] As Boolean) 

    settingProperties = True

    Dim batchedChange As ModelEditingScope = adornedControlModel.BeginEdit()
    Try
        Dim widthProperty As ModelProperty = adornedControlModel.Properties("Width")

        Dim heightProperty As ModelProperty = adornedControlModel.Properties("Height")

        If [auto] Then
            widthProperty.ClearValue()
            heightProperty.ClearValue()
        Else
            widthProperty.SetValue(20.0)
            heightProperty.SetValue(20.0)
        End If

        batchedChange.Complete()
    Finally
        batchedChange.Dispose()
        settingProperties = False
    End Try

End Sub
// The SetHeightAndWidth utility method sets the Height and Width
// properties through the model and commits the change.
private void SetHeightAndWidth(bool autoSize)
{
    settingProperties = true;

    try
    {
    using (ModelEditingScope batchedChange = adornedControlModel.BeginEdit())
    {
        ModelProperty widthProperty =
            adornedControlModel.Properties["Width"];

        ModelProperty heightProperty =
            adornedControlModel.Properties["Height"];

        if (autoSize)
        {
            widthProperty.ClearValue();
            heightProperty.ClearValue();
        }
        else
        {
            widthProperty.SetValue(20d);
            heightProperty.SetValue(20d);
        }

        batchedChange.Complete();
    }
    }
    finally { settingProperties = false; }
}

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参见

参考

Microsoft.Windows.Design.Model 命名空间

其他资源

演练:创建设计时装饰器

WPF 设计器扩展性