如果我现在有一个MainView,并且在MainView中我有一个堆栈面板。现在我想要的是基于菜单项点击插入不同的视图。如何使用MVVM Light实现这一点?在MVVM Light中为WPF布线视图
如果有人可以发布带有代码或视频的项目示例的链接,那将会很棒!
如果我现在有一个MainView,并且在MainView中我有一个堆栈面板。现在我想要的是基于菜单项点击插入不同的视图。如何使用MVVM Light实现这一点?在MVVM Light中为WPF布线视图
如果有人可以发布带有代码或视频的项目示例的链接,那将会很棒!
我不知道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>
而在底层视图模型我只设置了相应的属性使得用户控件的一个可见。
更好的方法是在主视图中定义所有视图的数据模板。 然后有一个itemscontrol(将其绑定到mainviewmodel的viewmodels属性集合)
现在基于menuitem单击,清除viewmodels集合并添加所需的视图。
看起来不错,但是您是否最初加载所有视图及其组件? – WhoIsNinja 2010-12-16 15:59:07
在我的情况是,因为我有一个底层视图模型和两个子视图模型;并且它们包装已经加载的两个域对象。我不知道你的情况。您可以选择延迟视图模型中的数据加载,直到它们变为可见(如果适用)。 – 2010-12-16 16:01:00
这就是对的。谢谢路德维希! – WhoIsNinja 2010-12-16 16:02:40