ModelItem Classe

Definizione

Rappresenta un singolo elemento nel modello di modifica. Un elemento può essere qualsiasi elemento da una struttura di dati complessa fino a un colore o 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

Può ModelItem essere considerato come un proxy sottile per un oggetto in corrispondenza del quale punta. Definire innanzitutto un oggetto semplice 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; }
}

In secondo luogo, creare un'istanza di e Animal un ModelItem oggetto che sia un proxy per esso. L'oggetto può quindi essere recuperato chiamando GetCurrentValue. Il codice seguente illustra anche come usare 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 ModelItem oggetto è un wrapper intorno al modello di dati sottostante della finestra di progettazione. È possibile accedere al modello sottostante tramite il GetCurrentValue metodo .

Note

Le modifiche apportate a un oggetto restituito dal GetCurrentValue metodo non verranno riflesse dai sistemi di serializzazione e annullamento della finestra di progettazione.

Costruttori

Nome Descrizione
ModelItem()

Crea una nuova istanza della ModelItem classe .

Proprietà

Nome Descrizione
Attributes

Ottiene gli attributi dichiarati in questo elemento.

Content

Ottiene l'oggetto ContentPropertyAttribute dell'elemento o null.

ItemType

Ottiene il tipo di 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 gli elementi padre di questo elemento.

Properties

Ottiene le proprietà pubbliche per questo elemento.

Root

Ottiene l'elemento che rappresenta la radice di questa struttura ad albero.

Source

Ottiene la proprietà che ha fornito questo valore.

Sources

Ottiene tutte le proprietà che contengono questo valore.

View

Ottiene un oggetto DependencyObject che rappresenta graficamente questo elemento.

Metodi

Nome Descrizione
BeginEdit()

Apre un ambito di modifica per la finestra di progettazione. Dopo l'apertura di un ambito di modifica, tutte le modifiche in tutti gli oggetti verranno salvate nell'ambito fino al completamento o al ripristino della transazione. È possibile annidare gli ambiti di modifica, ma è necessario eseguirne il commit in ordine.

BeginEdit(Boolean)

Apre un ambito di modifica per la finestra di progettazione.

BeginEdit(String, Boolean)

Apre un ambito di modifica per la finestra di progettazione.

BeginEdit(String)

Apre un ambito di modifica per la finestra di progettazione. Dopo l'apertura di un ambito di modifica, tutte le modifiche in tutti gli oggetti verranno salvate nell'ambito fino al completamento o al ripristino della transazione. È possibile annidare gli ambiti di modifica, ma è necessario eseguirne il commit in ordine.

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 viene eseguito il ModelItem wrapping.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

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

Eventi

Nome Descrizione
PropertyChanged

Implementa INotifyPropertyChanged. Usare questo evento per restare in ascolto delle modifiche apportate al modello. Viene usato anche dalle funzionalità di data binding di macchine virtuali Windows.

Metodi di estensione

Nome Descrizione
Focus(ModelItem, Int32)

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

Focus(ModelItem)

Imposta lo stato attivo della tastiera sull'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 elemento padre del secondo elemento della finestra di progettazione specificato.

Si applica a