У меня есть простой пример, когда я создаю представление, состоящее из окна списка, а в окне списка отображается куча элементов. Мне интересно, правильно ли я собираюсь создать классы View Model и Model здесь. Использовать любое значение корректно работает в этом контексте, я понимаю это немного субъективно, но мое текущее решение не кажется правильным. Вот упрощенная версия.
Модели и модели View:
namespace Example
{
public class ParentViewModel
{
public ParentViewModel()
{
// ... Create/Consume ChildViewModel * n
}
public List<ChildViewModel> ChildViewModels { get; set; }
}
public class ChildViewModel
{
public ChildViewModel()
{
// ... Create/Consume ChildModel
}
public ChildModel Model { get; set; }
}
public class ParentModel
{
public List<ChildModel> ChildModels { get; set; }
public ParentModel()
{
// ... Create/Consume ChildModel * n;
}
}
public class ChildModel
{
public ChildModel()
{
// ... Contains actual data.
}
public string Data { get; set; }
}
}
Вид:
<Window x:Class="Example.View"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Example="clr-namespace:Example" Title="View" Height="300" Width="300"
DataContext="{StaticResource TheViewModel}">
<Window.Resources>
<Example:ParentViewModel x:Key="TheViewModel" />
</Window.Resources>
<Grid>
<ListBox Height="261" HorizontalAlignment="Left" Name="listBox1" VerticalAlignment="Top" Width="278" ItemsSource="{Binding ChildViewModels}"/>
</Grid>
В правильном коде в списке будет использоваться шаблон данных для отображения моделей дочернего представления. Но, как вы можете видеть, я не уверен, как создать экземпляр дочерних объектов. Похоже, что ParentViewModel будет ссылаться на ParentModel и создавать объекты ChildViewModel на основе объектов ParentModel ChildModel. Теперь я сказал, что это звучит не так глупо, но меня бы интересовали ваши мысли.