2014-11-05 28 views
1

大图目标:我想编辑数据窗口中的模型,该数据窗口中充满了编辑给定模型的属性页面。我想用符合它们的多个界面来标记这些模型。对于每个接口,都存在关联的属性页视图模型和视图。如何使用容器来解析与模型关联的视图模型的集合?

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

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

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

回答

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

然后一切都会为你创建自动。

+0

谢谢,这是我使用的解决方案。 – Tim 2014-11-10 19:30:23