[英]MvvmCross Windows Store How to bind different ViewModels to Appbar?
我使用3 ViewModel:文件夾,文件夾和項目(文件夾中的文件夾和文件夾中的項目)。
因此,我將3 View用於Windows Phone應用程序的這3個ViewModel。
然后,我想為Windows應用商店創建具有主詳細信息視圖的應用程序,並為這些ViewModel使用1視圖。 我想像這里創建應用程序:
1) http://msdn.microsoft.com/zh-CN/library/windows/apps/xaml/hh758322.aspx );
2)與Microsoft的OneNote和Mail Windows Store應用類似。
我了解,我必須使用“自定義演示者”在1個視圖上顯示3個ViewModels中的數據。
因此,我嘗試使用“ MvvmCross-控件導航插件”( https://github.com/ChristianRuiz/MvvmCross-ControlsNavigation )。
MvvmCross控件導航插件在UserControls中放置了另外2個視圖。 雖然可以,但我發現了一個問題(Windows應用商店中的Appbar)。
Appbar必須根據用戶選擇的部分更改按鈕。 因此,我需要動態更改它並綁定到不同的ViewModel,具體取決於contecst(用戶單擊)。
早些時候,我通過在代碼后面刪除/添加按鈕來實現它,而沒有任何ViewModel。
我可以舉一個Appbar依賴於上下文動態變化的示例:Windows Store平台的OneNote應用程序。
應用欄示例(鏈接):
是否可以使用mvvmcross創建主要詳細信息應用程序?
如果是,那我該怎么辦?
您能提示我,因為我找不到任何解決方案嗎?
還是我必須為Windows Store應用程序創建一頁導航(我不想這樣做,因為我認為這對我的應用程序不方便)?
或者我必須僅將appbar與一個(首先加載的)ViewModel綁定(我認為這也不方便)?
我也曾嘗試將Appbar像UserControl一樣放置,但我不知道將其綁定到其他ViewModel上很熱,或者如果我將其綁定到AppbarViewModel上,則不知道會通知其他ViewModel。
還是要提前謝謝!
更新1
我試圖用UserControl和AppbarViewModel之類的Appbar解決我的問題。
我也嘗試使用“ MvvmCross Messenger插件”來通知其他ViewModel有關按鈕事件的信息,該事件在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:在Cirrious.MvvmCross.WindowsStore.Views.MvxStoreViewPresenter.Show(Cirrious.MvvmCross.Views.MvxViewsContainer.GetViewType(Type viewModelType)處找不到PortableTasks.ViewModels.AppbarViewModel的視圖)
2)當我不將AppbarControl放在Page.BottomAppBar中並將其放在這樣的頁面中的其他位置時:
<controls:AppbarControl Grid.Row="2"></controls:AppbarControl>
然后它可以正常工作,但是當用戶使用鼠標右鍵單擊時,控制IsOpen = true / false Appbar並不方便。
如何克服這個問題?
更新2
我幾乎用AppBar的IsOpen =“ True”和IsSticky =“ True”屬性解決了AppBar的問題。
有關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”屬性,問題將再次出現。
提前致謝!
我通過更改Windows Store平台的“ MvvmCross-控件導航插件”的源代碼解決了此問題。
我檢查了一下,看來還行。
我想聽聽任何改進或替代方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.