共用方式為


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 可以視為指向物件的精簡 Proxy。 首先定義簡單的 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 的實例,以及為其 Proxy 的 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

取得或設定項目的名稱或識別碼。

Parent

取得這個專案的父代專案。

Parents

取得這個專案的所有父代。

Properties

取得這個專案上的公用屬性。

Root

取得此樹狀結構根目錄的專案。

Source

取得提供這個值的屬性。

Sources

取得保存這個值的所有屬性。

View

取得以圖形方式表示此專案的 DependencyObject

方法

BeginEdit()

開啟設計工具的編輯範圍。 開啟編輯範圍之後,所有物件的所有變更都會儲存到範圍中,直到交易完成或還原為止。 編輯範圍可以巢狀化,但必須依序認可。

BeginEdit(Boolean)

開啟設計工具的編輯範圍。

BeginEdit(String, Boolean)

開啟設計工具的編輯範圍。

BeginEdit(String)

開啟設計工具的編輯範圍。 開啟編輯範圍之後,所有物件的所有變更都會儲存到範圍中,直到交易完成或還原為止。 編輯範圍可以巢狀化,但必須依序認可。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetCurrentValue()

傳回 ModelItem 包裝的基礎模型物件的目前值。

GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

傳回這個模型專案中包含的基礎模型物件的字串表示。

事件

PropertyChanged

實作 INotifyPropertyChanged。 使用此事件來接聽模型的變更。 這也會由 WPF 的數據系結功能使用。

擴充方法

Focus(ModelItem, Int32)

將鍵盤焦點設定為指定的設計工具專案。

Focus(ModelItem)

將鍵盤焦點設定為指定的設計工具專案。

GetEditingContext(ModelItem)

擷取指定之模型專案的編輯內容。

GetModelPath(ModelItem)

擷取指定之模型項目的路徑。

IsParentOf(ModelItem, ModelItem)

傳回值,這個值表示第一個指定的設計工具專案是否為第二個指定之設計工具專案的父代。

適用於