我有一个关于具有相同视图模型类型的多个用户控件视图的问题。我似乎找不到我的困惑的具体答案,但这是相当投机。
是的
<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/UnityIoC体系结构的依赖性属性视图模型数据上下文。
因此,这些将用于这些单独视图的数据内容经由另一接口绑定到主视图的接口的属性。
这一切似乎都工作正常,并且ParameterFileSummaryView中的元素绑定很好地绑定到第一个ParamterFile 1ViewModel上设置的值。
这正是我想要的当然,这些ViewModel是在主窗口的ViewModel中构建的,而不是在Unity容器之外。这一切都感觉有点古怪。有没有更好的方法来实现我正在尝试的东西。
如果这真的是一个毫无意义的问题,我道歉……但我见树不见林如果问题混淆,我会添加编辑,请耐心等待,我不是Maven:)。
1条答案
按热度按时间vsnjm48y1#
要为主视图拉取右ViewModel,请使用容器。或者作为服务定位器,让每个模型解析为相同的类型,并提取
IEnumerable<TViewModel>
,然后将其绑定到视图。