ModelItem Classe

Definição

Representa um único item no modelo de edição. Um item pode ser qualquer coisa, desde uma estrutura de dados complexa até uma cor ou inteiro.

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
Herança
ModelItem
Derivado
Implementações

Exemplos

O ModelItem pode ser visto como um proxy fino para um objeto para o qual aponta. Primeiro, defina um objeto simples 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; }
}

Em segundo lugar, cria uma instância disso Animal e um ModelItem que seja um proxy para ele. O objeto pode então ser recuperado chamando GetCurrentValue. O código seguinte também mostra como usar outras propriedades definidas por 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");

Observações

Podes aceder às propriedades do item através da sua Properties coleção e fazer alterações aos valores das propriedades.

A ModelItem é um wrapper em torno do modelo de dados subjacente do designer. Pode aceder ao modelo subjacente através do GetCurrentValue método.

Note

Quaisquer alterações que faças a um objeto devolvido pelo GetCurrentValue método não serão refletidas pelos sistemas de serialização e desfazer do designer.

Construtores

Name Description
ModelItem()

Cria uma nova instância da ModelItem classe.

Propriedades

Name Description
Attributes

Obtém os atributos declarados neste item.

Content

Obtém o ContentPropertyAttribute do item, ou null.

ItemType

Obtém o tipo de objeto que o item representa.

Name

Obtém ou define o nome ou ID do artigo.

Parent

Obtém o item que é o pai desse item.

Parents

Recebe todos os pais deste artigo.

Properties

Obtém as propriedades públicas deste item.

Root

Obtém o item que é a raiz desta árvore.

Source

Obtém a propriedade que forneceu esse valor.

Sources

Obtém todas as propriedades que mantêm esse valor.

View

Obtém um DependencyObject que representa graficamente este item.

Métodos

Name Description
BeginEdit()

Abre um escopo de edição para o designer. Depois de abrir um âmbito de edição, todas as alterações em todos os objetos serão guardadas no âmbito até que a transação seja concluída ou revertida. Os escopos de edição podem ser aninhados, mas têm de ser comprometidos por ordem.

BeginEdit(Boolean)

Abre um escopo de edição para o designer.

BeginEdit(String, Boolean)

Abre um escopo de edição para o designer.

BeginEdit(String)

Abre um escopo de edição para o designer. Depois de abrir um âmbito de edição, todas as alterações em todos os objetos serão guardadas no âmbito até que a transação seja concluída ou revertida. Os escopos de edição podem ser aninhados, mas têm de ser comprometidos por ordem.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetCurrentValue()

Devolve o valor atual do objeto modelo subjacente que o ModelItem está a envolver.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma representação string do objeto modelo subjacente contido neste item do modelo.

evento

Name Description
PropertyChanged

Implementa INotifyPropertyChanged. Use este evento para ouvir alterações no modelo. Isto é também utilizado pelas funcionalidades de ligação de dados do WPF.

Métodos da Extensão

Name Description
Focus(ModelItem, Int32)

Define o foco do teclado no item designer especificado.

Focus(ModelItem)

Define o foco do teclado no item designer especificado.

GetEditingContext(ModelItem)

Recupera o contexto de edição do item do modelo especificado.

GetModelPath(ModelItem)

Recupera o caminho do item do modelo especificado.

IsParentOf(ModelItem, ModelItem)

Devolve um valor que indica se o primeiro elemento designer especificado é pai do segundo item designer especificado.

Aplica-se a