ModelItem 클래스

정의

편집 모델의 단일 항목을 나타냅니다.Represents a single item in the editing model. 항목은 복잡한 데이터 구조에서 색 또는 정수에 이르기까지의 임의 항목일 수 있습니다.An item can be anything from a complex data structure down to a color or integer.

public ref class ModelItem abstract : System::ComponentModel::INotifyPropertyChanged
public abstract class ModelItem : System.ComponentModel.INotifyPropertyChanged
type ModelItem = class
    interface INotifyPropertyChanged
Public MustInherit Class ModelItem
Implements INotifyPropertyChanged
상속
ModelItem
파생
구현

예제

ModelItem 가리키는 개체의 씬 프록시로 간주할 수 있습니다.The ModelItem can be thought of as a thin proxy for an object at which it points. 먼저 간단한 개체를 정의 Animal 합니다.First define a simple Animal object.

public class Animal  
{  
    // simple property  
    public string Name { get; set; }  
    // complex property   
    public Location Residence { get; set; }   
    // list   
    public List<Animal> CloseRelatives { get; set; }  
    // dictionary  
    public Dictionary<string, object> Features { get; set; }   
}  

public class Location  
{  
    public string StreetAddress { get; set; }  
    public string City { get; set; }  
    public string State { get; set; }   
}  

그런 다음 해당 인스턴스 AnimalModelItem 그에 대 한 프록시를 만듭니다.Secondly, create an instance of that Animal and a ModelItem that is a proxy for it. 그런 다음를 호출 하 여 개체를 검색할 수 있습니다 GetCurrentValue .The object can then be retrieved by calling GetCurrentValue. 다음 코드에서는에서 정의한 다른 속성을 사용 하는 방법도 보여 줍니다 ModelItem .The following code also shows how to use other properties defined by ModelItem.

EditingContext ec = new EditingContext();  
var companion1 = new Animal { Name = "Houdini the parakeet" };  
var companion2 = new Animal { Name = "Groucho the fish" };  
var animal = new Animal   
   {  
      Name = "Sasha the pug",  
      Residence = new Location   
      {  
         StreetAddress = "123 Main Street",  
         City = "AnyTown",  
         State = "Washington"  
      },  
      Features = new Dictionary<string, object> {   
         {"noise", "snort" },  
         {"MeanTimeUntilNaps", TimeSpan.FromMinutes(15) }  
      },  
      CloseRelatives = new List<Animal> { companion1, companion2 }   
   };  
ModelTreeManager mtm = new ModelTreeManager(ec);  mtm.Load(animal);  
ModelItem mi = mtm.Root;  

//Testing other properties of the class  
ModelItem root = mtm.Root;  
Assert.IsTrue(root.GetCurrentValue() == animal, "GetCurrentValue() returns same object");  
Assert.IsTrue(root.ItemType == typeof(Animal),"ItemType describes the item");  
Assert.IsTrue(root.Parent == null,"root parent is null");  
Assert.IsTrue(root.Source == null, "root source is null");  
Assert.IsTrue(((List<Animal>)root.Properties["CloseRelatives"].ComputedValue)[0] == companion1,   
   "ComputedValue of prop == actual object");  
Assert.IsFalse(((List<Animal>)root.Properties["CloseRelatives"].ComputedValue)[0] == companion2,   
   "ComputedValue of prop == actual object");  
Assert.AreEqual(root.Properties["Residence"].  
   Value.  
   Properties["StreetAddress"].  
   Value.GetCurrentValue(), "123 Main Street", "get actual value back out");  
Assert.AreEqual(root, root.Properties["Residence"].Parent, "property points to owner");  
ModelItem location = root.Properties["Residence"].Value;  
Assert.AreEqual(root.Properties["Residence"], location.Source, "sources point to the right place");  

설명

컬렉션을 통해 항목의 속성에 액세스 하 Properties 고 속성의 값을 변경할 수 있습니다.You can access the item's properties through its Properties collection and make changes to the values of the properties.

ModelItem 디자이너의 기본 데이터 모델에 대 한 래퍼입니다.A ModelItem is a wrapper around the underlying data model of the designer. 메서드를 통해 기본 모델에 액세스할 수 있습니다 GetCurrentValue .You can access the underlying model through the GetCurrentValue method.

참고

메서드에서 반환 된 개체를 변경 하면 GetCurrentValue 디자이너의 serialization 및 실행 취소 시스템에 의해 반영 되지 않습니다.Any changes you make to an object returned from the GetCurrentValue method will not be reflected by the serialization and undo systems of the designer.

생성자

ModelItem()

ModelItem 클래스의 새 인스턴스를 만듭니다.Creates a new instance of the ModelItem class.

속성

Attributes

이 항목에서 선언된 특성을 가져옵니다.Gets the attributes declared on this item.

Content

항목의 ContentPropertyAttribute를 가져오거나, 그렇지 않으면 null입니다.Gets the ContentPropertyAttribute of the item, or null.

ItemType

항목이 나타내는 개체의 형식을 가져옵니다.Gets the type of object that the item represents.

Name

항목의 이름 또는 ID를 가져오거나 설정합니다.Gets or sets the name or ID of the item.

Parent

이 항목의 부모인 항목을 가져옵니다.Gets the item that is the parent of this item.

Parents

이 항목의 모든 부모를 가져옵니다.Gets all parents of this item.

Properties

이 항목의 공용 속성을 가져옵니다.Gets the public properties on this item.

Root

이 트리의 루트인 항목을 가져옵니다.Gets the item that is the root of this tree.

Source

이 값을 제공한 속성을 가져옵니다.Gets the property that provided this value.

Sources

이 값을 보유하는 모든 속성을 가져옵니다.Gets all the properties that hold this value.

View

이 항목을 그래픽으로 나타내는 DependencyObject를 가져옵니다.Gets a DependencyObject that graphically represents this item.

메서드

BeginEdit()

디자이너의 편집 범위를 엽니다.Opens an editing scope for the designer. 편집 범위를 연 후에는 트랜잭션을 완료하거나 되돌릴 때까지 모든 개체의 변경 내용이 모두 범위에 저장됩니다.After an editing scope is open, all changes across all objects will be saved into the scope until the transaction is completed or reverted. 편집 범위는 중첩할 수 있지만 순서대로 커밋해야 합니다.Editing scopes can be nested, but must be committed in order.

BeginEdit(Boolean)

디자이너의 편집 범위를 엽니다.Opens an editing scope for the designer.

BeginEdit(String)

디자이너의 편집 범위를 엽니다.Opens an editing scope for the designer. 편집 범위를 연 후에는 트랜잭션을 완료하거나 되돌릴 때까지 모든 개체의 변경 내용이 모두 범위에 저장됩니다.After an editing scope is open, all changes across all objects will be saved into the scope until the transaction is completed or reverted. 편집 범위는 중첩할 수 있지만 순서대로 커밋해야 합니다.Editing scopes can be nested, but must be committed in order.

BeginEdit(String, Boolean)

디자이너의 편집 범위를 엽니다.Opens an editing scope for the designer.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
GetCurrentValue()

ModelItem이 래핑하는 기본 모델 개체의 현재 값을 반환합니다.Returns the current value of the underlying model object that the ModelItem is wrapping.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

이 모델 항목에 포함된 기본 모델 개체의 문자열 표현을 반환합니다.Returns a string representation of the underlying model object contained in this model item.

이벤트

PropertyChanged

INotifyPropertyChanged 구현Implements INotifyPropertyChanged. 이 이벤트를 사용하여 모델 변경 내용을 수신할 수 있습니다.Use this event to listen for changes to the model. 이 매개 변수는 WPF의 데이터 바인딩 기능에서도 사용됩니다.This is also used by the data binding features of WPF.

확장 메서드

Focus(ModelItem)

지정한 디자이너 항목에 키보드 포커스를 설정합니다.Sets the keyboard focus on the specified designer item.

Focus(ModelItem, Int32)

지정한 디자이너 항목에 키보드 포커스를 설정합니다.Sets the keyboard focus on the specified designer item.

GetEditingContext(ModelItem)

지정한 모델 항목의 편집 컨텍스트를 검색합니다.Retrieves the editing context of the specified model item.

GetModelPath(ModelItem)

지정한 모델 항목의 경로를 검색합니다.Retrieves the path of the specified model item.

IsParentOf(ModelItem, ModelItem)

지정한 첫 번째 디자이너 항목이 지정한 두 번째 디자이너 항목의 부모인지 여부를 나타내는 값을 반환합니다.Returns a value that indicates whether the first specified designer item is a parent of the second specified designer item.

적용 대상