我有一个简单的例子,我正在创建一个由列表框组成的视图,列表框显示一堆项目.我想知道我是否正确地在这里创建View Model和Model类.使用在这种情况下正确工作的任何值,我理解它有点主观,但我目前的解决方案感觉不对.这是一个简化版本.
ViewModels和Models:
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
风景:
<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>
Run Code Online (Sandbox Code Playgroud)
在正确的代码中,列表框将使用数据模板来显示子视图模型.但正如你所看到的,我不确定如何实例化与子相关的对象.感觉ParentViewModel将引用ParentModel并基于ParentModel的ChildModel对象创建ChildViewModel对象.现在我说它听起来并不那么愚蠢,但我会对你的想法感兴趣.
Ali*_*tad 21
你走在正确的轨道上.
父模型自然会包含子模型列表,例如具有多个订单的客户.
当ParentViewModel由第三方创建和加载时,它将被传递给ParentModel.然后ParentViewModel意志:
ParentModel给局部变量 ChildViewModel为每个创建一个ChildModelChildModelChildViewModelChildViewModels到列表中顺便说一句,你想要的
public List<ChildViewModel> ChildViewModels { get; set; }
Run Code Online (Sandbox Code Playgroud)
成为
public ObservableCollection<ChildViewModel> ChildViewModels { get; set; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13620 次 |
| 最近记录: |