ModelItem Класс

Определение

Представляет один элемент в модели редактирования. Элемент может быть любым из сложной структуры данных до цвета или целого числа.

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
Наследование
ModelItem
Производный
Реализации

Примеры

Можно ModelItem считать тонким прокси-сервером для объекта, на котором он указывает. Сначала определите простой 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; }
}

Во-вторых, создайте экземпляр этого Animal и ModelItem прокси-сервер для него. Затем объект можно получить путем вызова GetCurrentValue. В следующем коде также показано, как использовать другие свойства, определенные с помощью 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");

Комментарии

Вы можете получить доступ к свойствам элемента через свою Properties коллекцию и внести изменения в значения свойств.

A ModelItem — это оболочка для базовой модели данных конструктора. Доступ к базовой модели можно получить с помощью GetCurrentValue метода.

Note

Любые изменения, внесенные в объект, возвращаемый методом GetCurrentValue , не будут отражены сериализацией и отменой систем конструктора.

Конструкторы

Имя Описание
ModelItem()

Создает новый экземпляр класса ModelItem.

Свойства

Имя Описание
Attributes

Возвращает атрибуты, объявленные для этого элемента.

Content

ContentPropertyAttribute Возвращает элемент или null.

ItemType

Возвращает тип объекта, который представляет элемент.

Name

Возвращает или задает имя или идентификатор элемента.

Parent

Возвращает элемент, который является родительским элементом этого элемента.

Parents

Возвращает все родители этого элемента.

Properties

Возвращает общедоступные свойства этого элемента.

Root

Возвращает элемент, который является корнем этого дерева.

Source

Возвращает свойство, предоставленное этим значением.

Sources

Возвращает все свойства, которые содержат это значение.

View

Возвращает графический DependencyObject элемент.

Методы

Имя Описание
BeginEdit()

Открывает область редактирования для конструктора. После открытия области редактирования все изменения во всех объектах будут сохранены в области до завершения или отмены транзакции. Области редактирования могут быть вложены, но должны быть зафиксированы в порядке.

BeginEdit(Boolean)

Открывает область редактирования для конструктора.

BeginEdit(String, Boolean)

Открывает область редактирования для конструктора.

BeginEdit(String)

Открывает область редактирования для конструктора. После открытия области редактирования все изменения во всех объектах будут сохранены в области до завершения или отмены транзакции. Области редактирования могут быть вложены, но должны быть зафиксированы в порядке.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetCurrentValue()

Возвращает текущее значение объекта базовой модели, который ModelItem выполняет оболочку.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта базовой модели, содержащегося в этом элементе модели.

События

Имя Описание
PropertyChanged

Реализует INotifyPropertyChanged. Используйте это событие для прослушивания изменений в модели. Это также используется функциями привязки данных WPF.

Методы расширения

Имя Описание
Focus(ModelItem, Int32)

Задает фокус клавиатуры на указанном элементе конструктора.

Focus(ModelItem)

Задает фокус клавиатуры на указанном элементе конструктора.

GetEditingContext(ModelItem)

Извлекает контекст редактирования указанного элемента модели.

GetModelPath(ModelItem)

Извлекает путь к указанному элементу модели.

IsParentOf(ModelItem, ModelItem)

Возвращает значение, указывающее, является ли первый указанный элемент конструктора родительским элементом второго указанного элемента конструктора.

Применяется к