У меня есть простой пример, где я создаю представление, состоящее из поля со списком, и в этом списке отображается множество элементов. Мне интересно, правильно ли я собираюсь создать здесь классы View Model и Model. Используйте любое значение правильно работает в этом контексте, я понимаю, что это немного субъективно, но мое текущее решение не кажется правильным. Вот упрощенная версия.
Модели и модели:
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 на основе объектов ChildModel ParentModel. Теперь я сказал, что это звучит не так глупо, но мне будут интересны ваши мысли.