几天前我问了这个问题,但答案让我更加困惑。所以我会问一个更简单的问题:
(我正在使用 Caliburn.Micro,这是一个 WPF 应用程序)。假设您有一个 MainView/MainViewModel,它具有子 AView/AViewModel 和 BView/BViewModel。您的 MainView 是一个网格,并且是您要使用 AView 或 BView 填充的单元格之一,具体取决于用户选择。如果我只想显示 AView,我会执行以下操作:
在主视图中:
<StackPanel Name="SP_Controls" VerticalAlignment="Bottom" Grid.Row="1" Grid.Column="0">
<ContentControl Name="ViewModelToShow" Margin="10" />
</StackPanel>
在 MainViewModel 中:
public AViewModel ViewModelToShow{get; set;}
我现在天真的想法是做这样的事情:
private AViewModel _AVM;
private BViewModel _BVM;
public ... ViewModelToShow{ get; set;}
然后在代码中,例如,将视图模型设置为显示:
ViewModelToShow = _BVM;
我唯一的问题是“...”,因为每个 ViewModel 都属于不同的类。有没有办法用泛型来做到这一点,或者我应该为我的 ViewModel 定义一个基类,然后将它们投射到其中?但如果我这样做,它们仍然会正确显示吗?谢谢。