我使用3个ViewModel:文件夹,文件夹和项目(文件夹中的文件夹和文件夹中的项目)。
因此,我使用3 View for这3个ViewModel for Windows Phone app。
然后,我想为Windows应用商店创建包含主详细信息视图的应用,并为这些ViewModel使用1视图。 我想在这里创建应用程序:
1)http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh758322.aspx);
2)与Microsoft的OneNote和Mail Windows Store应用程序类似。
据我所知,我必须使用“自定义演示者”来显示1个View上3个ViewModel的数据。
所以,我尝试使用“MvvmCross - 控制导航插件”(https://github.com/ChristianRuiz/MvvmCross-ControlsNavigation)。
MvvmCross控件导航插件在UserControls中放置了另外两个View。 我觉得,它很适合我,但我发现了一个问题(Windows Store应用程序中的Appbar)。
Appbar必须根据用户选择的部分更改按钮。 因此,我需要动态更改它并绑定到不同的ViewModel取决于contecst(用户点击)。
早期我通过删除/添加代码后面的按钮而没有任何ViewModel。
我可以举例说明Appbar动态变化取决于上下文: 适用于Windows应用商店平台的OneNote应用程序。
Appbar示例(链接):
是否可以使用mvvmcross创建主详细信息应用程序?
如果是,那我怎么办呢?
你能暗示我,因为我找不到任何解决办法吗?
或者我必须为Windows应用商店应用创建一个页面导航(我不想这样做,因为我觉得这对我的应用来说不方便)?
或者我必须将appbar与一个(第一个加载的)ViewModel绑定(我想,这也不方便)?
我也尝试将Appbar放置为UserControl,但我不知道将它绑定到不同的ViewModel,或者如果我将它绑定到AppbarViewModel,我不知道热点通知其他人ViewModel。
无论如何都要提前感谢!
更新1
我尝试用Appbar解决我的问题,比如UserControl和AppbarViewModel。
此外,我尝试使用“MvvmCross Messenger插件”来通知其他ViewModels关于按钮事件的内容,该事件是在appbar中引发的。
链接到MvvmCross Messenger插件: https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins#messenger
现在,我再次遇到Page.BottomAppBar的问题。
我创建了AppbarControl和AppbarViewModel。
1)当我把AppbarControl放在Page.BottomAppBar中时:
<Page.BottomAppBar>
<AppBar>
<controls:AppbarControl></controls:AppbarControl>
</AppBar>
</Page.BottomAppBar>
我收到这样的错误:
在向AppbarViewModel导航请求期间看到错误 - 错误KeyNotFoundException:无法找到PortableTasks.ViewModels.AppbarViewModel的视图 在Cirrious.MvvmCross.Views.MvxViewsContainer.GetViewType(Type viewModelType) 在Cirrious.MvvmCross.WindowsStore.Views.MvxStoreViewPresenter.Show(MvxViewModelRequest request)
2)当我没有将AppbarControl放在Page.BottomAppBar中并将其放在如下页面中的其他位置时:
<controls:AppbarControl Grid.Row="2"></controls:AppbarControl>
然后它运行良好,但不方便控制IsOpen = true / false Appbar,当用户使用鼠标右键单击时。
如何克服这个问题?
已更新2
我几乎用AppBar解决了问题,AppBar的IsOpen =“True”和IsSticky =“True”属性。
有关IsSticky属性的更多信息,请访问:issticky
下面的Xaml代码:
<Page.BottomAppBar>
<AppBar IsOpen="True" IsSticky="True">
<controls:AppbarControl></controls:AppbarControl>
</AppBar>
</Page.BottomAppBar>
AppbarControl的位置:
<controls:MvxStoreControl xmlns:controls="using:MupApps.MvvmCross.Plugins.ControlsNavigation.WindowsStore">
<Grid >
<StackPanel Orientation="Horizontal">
<AppBarButton/>
<AppBarButton/>
</StackPanel>
</Grid>
</controls:MvxStoreControl>
此外,我更改了一个“MvvmCross - 控制导航插件”的一些源代码。 在此改进之后,错误“无法找到AppbarViewModel的视图”消失。 如果我不使用IsSticky =“True”属性,则问题会再次出现。
提前致谢!
答案 0 :(得分:1)
我通过更改Windows Store平台的“MvvmCross - Controls Navigation Plugin”源代码解决了这个问题。
我查了一下,似乎有效。
我想听听任何改进或替代方法。