MVVM: как обрабатывать список моделей в ViewModel?C#

Место общения программистов C#
Ответить
Anonymous
 MVVM: как обрабатывать список моделей в ViewModel?

Сообщение Anonymous »

Я пытаюсь создать программу MindMap, используя WPF с MVVM.
У меня есть модель под названием «NodeModel», в которой есть список дочерних узловых моделей.

Код: Выделить всё

public class NodeModel
{
public string Content { get; set; }
public Vector2 Position { get; set; }
public NodeModel ?ParentNode { get; set; }
public List ChildrenNodes { get; }
}
Теперь я хотел реализовать NodeViewModel, чтобы представление могло уведомляться о любых изменениях, внесенных узлом.

Код: Выделить всё

public class NodeViewModel : ViewModelBase
{
private string _content;
public string Content
{
get
{
return _content;
}
set
{
_content = value;
OnPropertyChanged(nameof(Content));
}
}

private Vector2 _position;
public Vector2 Position
{
get
{
return _position;
}
set
{
_position = value;
OnPropertyChanged(nameof(Position));
}
}

private NodeModel? _parentNode;
public NodeModel ParentNode
{
get
{
return _parentNode;
}
set
{
_parentNode = value;
OnPropertyChanged(nameof(ParentNode));
}
}

public NodeViewModel(NodeModel node)
{
Content = node.Content;
Position = node.Position;
ParentNode = node.ParentNode;
}
}
Проблема, с которой я столкнулся, заключается в том, что я не знаю, как мне следует обращаться со списком, который я создал в NodeModel, во ViewModel. Я не могу просто использовать список NodeModel, потому что тогда NodeModel не сможет уведомить представление. Но я не могу использовать NodeViewModels, потому что мой список поддерживает только NodeModels. Что мне делать?
Мое решение — просто изменить тип списка в NodeModel на NodeViewModel. Но это неправильно, потому что тогда модели не будут должным образом инкапсулированы из ViewModel.

Подробнее здесь: https://stackoverflow.com/questions/787 ... -viewmodel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»