如何使用容器来解析与模型关联的视图模型集合?

时间:2014-11-05 17:26:14

标签: mvvm catel

大图片目标:我想在数据窗口中编辑模型,该窗口中包含编辑给定模型的属性页面。我想用他们满足的多个接口标记模型。对于每个接口,都存在关联的属性页面视图模型和视图。

我正在努力解决的是如何从满足1-N接口的给定模型中解析属性页面视图模型的集合。

我想知道是否可以在容器中放置属性页面视图模型工厂?我将尝试从容器中解析属性页面视图模型的集合,并且容器将使用工厂正确生成所需的视图模型。我可以将视图模型集合交给数据窗口,该窗口将使用ViewModelToViewConverter生成视图模型的视图。

是否可以在容器中注册工厂?这是实现这一目标的最佳方式吗?我想我可以让数据窗口的viewmodel句柄将模型转换为viewmodel的集合,但这感觉超出了范围。

1 个答案:

答案 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; }
}

然后会自动为您创建所有内容。