Condividi tramite


ModelItem Classe

Definizione

Rappresenta un singolo elemento nel modello di modifica. Un elemento può essere qualunque cosa, da una struttura dati complessa fino a un colore o a un numero intero.

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
Ereditarietà
ModelItem
Derivato
Implementazioni

Esempio

ModelItem può essere considerato come un proxy sottile per un oggetto a cui punta. Per prima cosa, definire un oggetto Animal semplice.

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

In secondo luogo, creare un'istanza di quell'oggetto Animal e un oggetto ModelItem che è un proxy per l'oggetto stesso. L'oggetto può essere recuperato chiamando GetCurrentValue. Nel codice seguente viene mostrato anche come utilizzare le altre proprietà definite da 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");  

Commenti

È possibile accedere alle proprietà dell'elemento tramite la relativa Properties raccolta e apportare modifiche ai valori delle proprietà.

Un oggetto ModelItem è essenzialmente un wrapper del modello dati sottostante della finestra di progettazione. È possibile accedere al modello sottostante tramite il metodo GetCurrentValue.

Nota

Qualsiasi modifica a un oggetto restituito dal metodo GetCurrentValue non comparirà nella serializzazione e nei sistemi di annullamento della finestra di progettazione.

Costruttori

ModelItem()

Crea una nuova istanza della classe ModelItem.

Proprietà

Attributes

Ottiene gli attributi dichiarati su questo elemento.

Content

Ottiene l'oggetto ContentPropertyAttribute dell'elemento o null.

ItemType

Ottiene il tipo dell'oggetto rappresentato dall'elemento.

Name

Ottiene o imposta il nome o l'ID dell'elemento.

Parent

Ottiene l'elemento padre di questo elemento.

Parents

Ottiene tutti i padri di questo elemento.

Properties

Ottiene le proprietà pubbliche su questo elemento.

Root

Ottiene l'elemento radice di questo albero.

Source

Ottiene la proprietà che ha fornito questo valore.

Sources

Ottiene tutte le proprietà che gestiscono questo valore.

View

Ottiene un un oggetto DependencyObject che rappresenta graficamente questo elemento.

Metodi

BeginEdit()

Apre un ambito di modifica per la finestra di progettazione. Quando un ambito di modifica è aperto, tutte le modifiche su tutti gli oggetti verranno salvate nell'ambito fino a quando la transazione sarà completata o ripristinata. Gli ambiti di modifica possono essere annidati, tuttavia è necessario eseguirne il commit in base all'ordine.

BeginEdit(Boolean)

Apre un ambito di modifica per la finestra di progettazione.

BeginEdit(String)

Apre un ambito di modifica per la finestra di progettazione. Quando un ambito di modifica è aperto, tutte le modifiche su tutti gli oggetti verranno salvate nell'ambito fino a quando la transazione sarà completata o ripristinata. Gli ambiti di modifica possono essere annidati, tuttavia è necessario eseguirne il commit in base all'ordine.

BeginEdit(String, Boolean)

Apre un ambito di modifica per la finestra di progettazione.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetCurrentValue()

Restituisce il valore corrente dell'oggetto modello sottostante di cui l'oggetto ModelItem sta eseguendo il wrapping.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'oggetto modello sottostante contenuta in questo elemento del modello.

Eventi

PropertyChanged

Implementa INotifyPropertyChanged. Utilizzare questo evento per attendere le modifiche nel modello. Viene utilizzato anche dalle funzionalità dell'associazione dati di WPF.

Metodi di estensione

Focus(ModelItem)

Imposta lo stato attivo dell'elemento della finestra di progettazione specificato.

Focus(ModelItem, Int32)

Imposta lo stato attivo dell'elemento della finestra di progettazione specificato.

GetEditingContext(ModelItem)

Recupera il contesto di modifica dell'elemento del modello specificato.

GetModelPath(ModelItem)

Recupera il percorso dell'elemento del modello specificato.

IsParentOf(ModelItem, ModelItem)

Restituisce un valore che indica se il primo elemento della finestra di progettazione specificato è un padre del secondo elemento specificato della finestra di progettazione.

Si applica a