ModelItem Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un elemento único en el modelo de edición. Un elemento puede ser cualquier cosa, desde una estructura completa de datos hasta un color o un entero.
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
- Herencia
-
ModelItem
- Derivado
- Implementaciones
Ejemplos
El ModelItem se puede considerar como un proxy ligero para un objeto al que señala. Defina primero un objeto Animal
simple.
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; }
}
En segundo lugar, cree una instancia de ese Animal
y un ModelItem que sea un proxy para él. Así se podrá recuperar el objeto llamando al método GetCurrentValue. El siguiente código también muestra cómo utilizar otras propiedades 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");
Comentarios
Puede acceder a las propiedades del elemento a través de su Properties colección y realizar cambios en los valores de las propiedades.
Un ModelItem es un contenedor que incluye el modelo de datos subyacente del diseñador. Se puede tener acceso al modelo subyacente mediante el método GetCurrentValue.
Nota
Los cambios que realice en un objeto devuelto desde el método GetCurrentValue no se reflejarán por la serialización y los sistemas de deshacer del diseñador.
Constructores
ModelItem() |
Crea una nueva instancia de la clase ModelItem. |
Propiedades
Attributes |
Obtiene los atributos declarados en este elemento. |
Content |
Obtiene |
ItemType |
Obtiene el tipo de objeto que representa el elemento. |
Name |
Obtiene o establece el nombre o identificador del elemento. |
Parent |
Obtiene el elemento que es el elemento principal de este elemento. |
Parents |
Obtiene todos los principales de este elemento. |
Properties |
Obtiene las propiedades públicas de este elemento. |
Root |
Obtiene el elemento que es la raíz de este árbol. |
Source |
Obtiene la propiedad que proporcionó este valor. |
Sources |
Obtiene todas las propiedades que contienen este valor. |
View |
Obtiene un objeto DependencyObject que represente gráficamente este elemento. |
Métodos
BeginEdit() |
Abre un ámbito de edición para el diseñador. Después de abrir un ámbito de edición, todos los cambios de todos los objetos se guardarán en el ámbito hasta que se complete o se revierta la transacción. Los ámbitos de edición se pueden anidar y se deben confirmar en orden. |
BeginEdit(Boolean) |
Abre un ámbito de edición para el diseñador. |
BeginEdit(String) |
Abre un ámbito de edición para el diseñador. Después de abrir un ámbito de edición, todos los cambios de todos los objetos se guardarán en el ámbito hasta que se complete o se revierta la transacción. Los ámbitos de edición se pueden anidar y se deben confirmar en orden. |
BeginEdit(String, Boolean) |
Abre un ámbito de edición para el diseñador. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetCurrentValue() |
Devuelve el valor actual del modelo de objetos subyacente que encapsula el objeto ModelItem. |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Devuelve una representación de cadena del objeto de modelo subyacente contenida en este elemento de modelo. |
Eventos
PropertyChanged |
Implementa |
Métodos de extensión
Focus(ModelItem) |
Establece el foco del teclado en el elemento de diseño especificado. |
Focus(ModelItem, Int32) |
Establece el foco del teclado en el elemento de diseño especificado. |
GetEditingContext(ModelItem) |
Recupera el contexto de edición del elemento del modelo especificado. |
GetModelPath(ModelItem) |
Recupera la ruta de acceso del elemento del modelo especificado. |
IsParentOf(ModelItem, ModelItem) |
Devuelve un valor que indica si el primer elemento de diseñador especificado es un elemento principal del segundo elemento de diseñador especificado. |