ModelItem Klass

Definition

Representerar ett enskilt objekt i redigeringsmodellen. Ett objekt kan vara allt från en komplex datastruktur till en färg eller ett heltal.

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
Arv
ModelItem
Härledda
Implementeringar

Exempel

Kan ModelItem ses som en tunn proxy för ett objekt där det pekar. Definiera först ett enkelt Animal objekt.

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

För det andra skapar du en instans av den Animal och en ModelItem som är en proxy för den. Objektet kan sedan hämtas genom att anropa GetCurrentValue. Följande kod visar också hur du använder andra egenskaper som definieras av 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");

Kommentarer

Du kan komma åt objektets egenskaper via samlingen Properties och göra ändringar i egenskapernas värden.

A ModelItem är en omslutning runt designerns underliggande datamodell. Du kan komma åt den underliggande modellen via GetCurrentValue -metoden.

Note

Alla ändringar du gör i ett objekt som returneras från GetCurrentValue metoden återspeglas inte av designerns serialiserings- och ångra-system.

Konstruktorer

Name Description
ModelItem()

Skapar en ny instans av ModelItem klassen.

Egenskaper

Name Description
Attributes

Hämtar attributen som deklarerats för det här objektet.

Content

ContentPropertyAttribute Hämtar objektets eller null.

ItemType

Hämtar den typ av objekt som objektet representerar.

Name

Hämtar eller anger objektets namn eller ID.

Parent

Hämtar objektet som är överordnat för det här objektet.

Parents

Hämtar alla föräldrar till det här objektet.

Properties

Hämtar de offentliga egenskaperna för det här objektet.

Root

Hämtar det objekt som är roten i det här trädet.

Source

Hämtar egenskapen som angav det här värdet.

Sources

Hämtar alla egenskaper som innehåller det här värdet.

View

Hämtar en DependencyObject som grafiskt representerar det här objektet.

Metoder

Name Description
BeginEdit()

Öppnar ett redigeringsomfång för designern. När ett redigeringsomfång är öppet sparas alla ändringar i alla objekt i omfånget tills transaktionen har slutförts eller återställts. Redigeringsomfång kan kapslas, men måste checkas in i ordning.

BeginEdit(Boolean)

Öppnar ett redigeringsomfång för designern.

BeginEdit(String, Boolean)

Öppnar ett redigeringsomfång för designern.

BeginEdit(String)

Öppnar ett redigeringsomfång för designern. När ett redigeringsomfång är öppet sparas alla ändringar i alla objekt i omfånget tills transaktionen har slutförts eller återställts. Redigeringsomfång kan kapslas, men måste checkas in i ordning.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetCurrentValue()

Returnerar det aktuella värdet för det underliggande modellobjektet ModelItem som omsluts.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en strängrepresentation av det underliggande modellobjektet som finns i det här modellobjektet.

Händelser

Name Description
PropertyChanged

Implementerar INotifyPropertyChanged. Använd den här händelsen för att lyssna efter ändringar i modellen. Detta används också av databindningsfunktionerna i WPF.

Tilläggsmetoder

Name Description
Focus(ModelItem, Int32)

Anger tangentbordsfokus på det angivna designerobjektet.

Focus(ModelItem)

Anger tangentbordsfokus på det angivna designerobjektet.

GetEditingContext(ModelItem)

Hämtar redigeringskontexten för det angivna modellobjektet.

GetModelPath(ModelItem)

Hämtar sökvägen till det angivna modellobjektet.

IsParentOf(ModelItem, ModelItem)

Returnerar ett värde som anger om det första angivna designerobjektet är överordnat till det andra angivna designerobjektet.

Gäller för