ModelItem Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |
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 |
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. |