我有一个关于具有相同视图模型类型的多个用户控件视图的问题。对于我的困惑,我似乎找不到具体的答案,但这是相当推测的。
。
<StackPanel Orientation="Vertical">
<TextBlock Text="Signature Summary" FontSize="14" FontWeight="Bold" TextAlignment="Center" Height="30"/>
<my:ParameterFileSummaryView DataContext="{Binding ParamterFile1ViewModel}"/>
<my:ParameterFileSummaryView DataContext="{Binding ParamterFile2ViewModel}"/>
<my:ParameterFileSummaryView DataContext="{Binding ParamterFile3ViewModel}"/>
<my:ParameterFileSummaryView DataContext="{Binding ParamterFile4ViewModel}"/>
<my:ParameterFileSummaryView DataContext="{Binding ParamterFile5ViewModel}"/>
</StackPanel>
堆栈面板是主视图中的容器,它具有用于Prism/Unity IoC架构的依赖属性视图模型数据上下文。
因此,这些单独视图的数据内容通过另一个接口绑定到主视图接口的属性。
这一切似乎都工作得很好,并且ParameterFileSummaryView中的元素绑定很好地绑定到第一个parterfile1viewmodel上设置的值。
这正是我想要的。但是当然这些ViewModels是在主窗口的ViewModel中构建的,而不是在Unity容器....中这感觉有点粗糙。有没有一种更干净的方法来实现我所尝试的。
如果这真的是一个没有意义的问题,我很抱歉…但是只见树木不见森林。如果问题让我困惑,我会添加编辑,请耐心点,我不是专家:)。要为主视图拉出正确的ViewModel,请使用容器。要么作为服务定位器,让每个模型解析为相同的类型,然后拉出IEnumerable<TViewModel>
,然后将其绑定到视图。