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 |
|
| 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 |
Реализует |
Методы расширения
| Имя | Описание |
|---|---|
| Focus(ModelItem, Int32) |
Задает фокус клавиатуры на указанном элементе конструктора. |
| Focus(ModelItem) |
Задает фокус клавиатуры на указанном элементе конструктора. |
| GetEditingContext(ModelItem) |
Извлекает контекст редактирования указанного элемента модели. |
| GetModelPath(ModelItem) |
Извлекает путь к указанному элементу модели. |
| IsParentOf(ModelItem, ModelItem) |
Возвращает значение, указывающее, является ли первый указанный элемент конструктора родительским элементом второго указанного элемента конструктора. |