ModelItem クラス

定義

編集モデル内の単一の項目を表します。 項目には、複雑なデータ構想から色や整数まで、あらゆるものがあります。

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 は、これが指示しているオブジェクトのシン プロキシと考えることができます。 まず、単純な Animal オブジェクトを定義します。

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 を作成します。 オブジェクトは、GetCurrentValue を呼び出して取得できます。 次のコードは、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 し、プロパティの値を変更することができます。

ModelItem は、デザイナーの基になるデータ モデルを包むラッパーです。 基になるモデルには、GetCurrentValue メソッドを使用してアクセスできます。

注意

GetCurrentValue メソッドから返されたオブジェクトに加えた変更は、デザイナーのシリアル化および取り消しシステムに反映されません。

コンストラクター

ModelItem()

ModelItem クラスの新しいインスタンスを作成します。

プロパティ

Attributes

この項目に対して宣言された属性を取得します。

Content

項目の ContentPropertyAttribute または null を取得します。

ItemType

項目が表すオブジェクトの型を取得します。

Name

項目の名前または ID を取得または設定します。

Parent

この項目の親である項目を取得します。

Parents

この項目のすべての親を取得します。

Properties

この項目のパブリック プロパティを取得します。

Root

このツリーのルートである項目を取得します。

Source

この値を提供したプロパティを取得します。

Sources

この値を保持するすべてのプロパティを取得します。

View

この項目をグラフィックで表現する DependencyObject を取得します。

メソッド

BeginEdit()

デザイナーの編集スコープを開きます。 編集スコープが開かれた後、すべてのオブジェクトの変更はすべて、トランザクションが完了するか、元に戻されるまでスコープに保存されます。 編集スコープは入れ子にできますが、一定の順序でコミットする必要があります。

BeginEdit(Boolean)

デザイナーの編集スコープを開きます。

BeginEdit(String)

デザイナーの編集スコープを開きます。 編集スコープが開かれた後、すべてのオブジェクトの変更はすべて、トランザクションが完了するか、元に戻されるまでスコープに保存されます。 編集スコープは入れ子にできますが、一定の順序でコミットする必要があります。

BeginEdit(String, Boolean)

デザイナーの編集スコープを開きます。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetCurrentValue()

ModelItem がラップしている、基になるモデル オブジェクトの現在の値を返します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

このモデル アイテムに格納されている、基になるモデル オブジェクトの文字列表現を返します。

events

PropertyChanged

INotifyPropertyChanged の実装。 モデルに対する変更をリッスンするには、このイベントを使用します。 また、このイベントは、WPF のデータ バインディング機能によっても使用されます。

拡張メソッド

Focus(ModelItem)

指定したデザイナー項目についてキーボード フォーカスを設定します。

Focus(ModelItem, Int32)

指定したデザイナー項目についてキーボード フォーカスを設定します。

GetEditingContext(ModelItem)

指定したモデル アイテムの編集コンテキストを取得します。

GetModelPath(ModelItem)

指定したモデル アイテムのパスを取得します。

IsParentOf(ModelItem, ModelItem)

指定した最初のデザイナー項目が、指定した 2 番目のデザイナー項目の親であるかどうかを示す値を取得します。

適用対象