大图片目标:我想在数据窗口中编辑模型,该窗口中包含编辑给定模型的属性页面。我想用他们满足的多个接口标记模型。对于每个接口,都存在关联的属性页面视图模型和视图。
我正在努力解决的是如何从满足1-N接口的给定模型中解析属性页面视图模型的集合。
我想知道是否可以在容器中放置属性页面视图模型工厂?我将尝试从容器中解析属性页面视图模型的集合,并且容器将使用工厂正确生成所需的视图模型。我可以将视图模型集合交给数据窗口,该窗口将使用ViewModelToViewConverter生成视图模型的视图。
是否可以在容器中注册工厂?这是实现这一目标的最佳方式吗?我想我可以让数据窗口的viewmodel句柄将模型转换为viewmodel的集合,但这感觉超出了范围。
答案 0 :(得分:0)
我认为您可以创建要在主视图模型中编辑的模型列表(ObservableCollection)。然后创建一个ItemsControl,其自定义视图作为数据模板:
<ItemsControl ItemsSource="{Binding MyModels}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<myViews:ModelEditorView />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
然后你有了这个为 ModelEditorView 自动创建的视图模型:
public class ModelEditorViewModel : ViewModelBase
{
public ModelEditorViewModel(MyModel model /*, other dependency injections here*/)
{
Argument.IsNotNull(() => model);
Model = model;
}
public MyModel Model { get; private set; }
}
然后会自动为您创建所有内容。