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, потому что тогда NodeModels не смогут уведомить представление. Но я не могу использовать NodeViewModels, потому что мой список поддерживает только NodeModels. Что мне делать?
Мое решение — просто изменить тип списка в NodeModel на NodeViewModel. Но это неправильно, потому что тогда модели не будут должным образом инкапсулированы из ViewModel.

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

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