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; }   
}  
  

次に、その Animal のインスタンスと、そのプロキシである ModelItem を作成します。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 メソッドから返されたオブジェクトに加えた変更は、デザイナーのシリアル化および取り消しシステムに反映されません。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)

指定した最初のデザイナー項目が、指定した 2 番目のデザイナー項目の親であるかどうかを示す値を取得します。Returns a value that indicates whether the first specified designer item is a parent of the second specified designer item.

適用対象