2010-12-16 71 views
2

如果我现在有一个MainView,并且在MainView中我有一个堆栈面板。现在我想要的是基于菜单项点击插入不同的视图。如何使用MVVM Light实现这一点?在MVVM Light中为WPF布线视图

如果有人可以发布带有代码或视频的项目示例的链接,那将会很棒!

回答

3

我不知道MVVM轻,但我做这样的事情,如果没有这个灯的框架如下:

<!-- Content area that contains user controls for all wizard steps --> 
    <Grid Margin="0,3,0,0"> 
     <Views:CustomerSelection Visibility="{Binding Path=IsCustomerSelectionVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:CustomerInformation Visibility="{Binding Path=IsCustomerInformationVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:CustomerPreferences Visibility="{Binding Path=IsCustomerPreferencesVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:ProjectSelection Visibility="{Binding Path=IsProjectSelectionVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:KitchenProjectPreferences Visibility="{Binding Path=IsKitchenProjectPreferencesVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
     <Views:OtherProjectProperties Visibility="{Binding Path=IsOtherProjectPropertiesVisible, Converter={StaticResource boolToVisibilityConverter}}" /> 
    </Grid>  

而在底层视图模型我只设置了相应的属性使得用户控件的一个可见。

+0

看起来不错,但是您是否最初加载所有视图及其组件? – WhoIsNinja 2010-12-16 15:59:07

+0

在我的情况是,因为我有一个底层视图模型和两个子视图模型;并且它们包装已经加载的两个域对象。我不知道你的情况。您可以选择延迟视图模型中的数据加载,直到它们变为可见(如果适用)。 – 2010-12-16 16:01:00

+0

这就是对的。谢谢路德维希! – WhoIsNinja 2010-12-16 16:02:40

0

更好的方法是在主视图中定义所有视图的数据模板。 然后有一个itemscontrol(将其绑定到mainviewmodel的viewmodels属性集合)

现在基于menuitem单击,清除viewmodels集合并添加所需的视图。