我使用3 ViewModel:文件夾,文件夾和項目(文件夾中的文件夾和文件夾中的項目)。MvvmCross Windows Store如何將不同的ViewModel綁定到Appbar?
因此,我使用3 View for這3個ViewModels for Windows Phone應用程序。
然後,我想爲Windows Store創建具有主細節視圖的應用程序,並對這些ViewModel使用1視圖。 我想創建這樣的應用程序:
1)http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh758322.aspx);
2)像OneNote和Mail Windows應用程序一樣來自Microsoft。
據我所知,我必須使用「自定義演示者」來顯示1視圖上3個ViewModel的數據。
所以,我試圖使用「MvvmCross - 控件導航插件」(https://github.com/ChristianRuiz/MvvmCross-ControlsNavigation)。
MvvmCross Controls Navigation Plugin將2個其他視圖放在UserControls中。 雖然,它很適合我,但是我發現了一個問題(Windows應用商店應用中的Appbar)。
Appbar必須根據用戶選擇的部分更改按鈕。 所以,我需要動態地改變它,並綁定到不同的ViewModels取決於比賽(用戶點擊)。
早期我通過在沒有任何ViewModel的情況下在代碼後面刪除/添加按鈕來完成它。
我可以舉例說明Appbar動態更改取決於上下文: 適用於Windows Store平臺的OneNote應用程序。 Appbar(鏈接)的
實施例:
是否有可能創建主解尾巴應用程序與mvvmcross?
如果是這樣,那我該怎麼辦呢?
你能暗示我,因爲我找不到任何解決方案嗎?
或者我必須爲Windows Store應用程序創建一個頁面導航(我不想這樣做,因爲我認爲這對我的應用程序不方便)?
或者我必須綁定appbar只有一個(第一個加載的)ViewModel(我認爲這不太方便)?
我也嘗試將Appbar設置爲UserControl,但我不知道它是否會將其綁定到不同的ViewModel,或者如果我將它綁定到AppbarViewModel,我不知道是否會通知其他ViewModel。
無論如何先謝謝了!
更新1
我試圖解決我的問題與Appbar像用戶控件和AppbarViewModel。
此外,我嘗試使用「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:找不到視圖PortableTasks.ViewModels.AppbarViewModel 在Cirrious.MvvmCross.Views.MvxViewsContainer.GetViewType(類型viewModelType) 在Cirrious.MvvmCross.WindowsStore.Views.MvxStoreViewPresenter.Show(MvxViewModelRequest請求)
2)如果我不把AppbarControl在Page.BottomAppBar並把它在其他地方的頁面是這樣的:
<controls:AppbarControl Grid.Row="2"></controls:AppbarControl>
然後它工作得很好,但它不是方便的控制ISOPEN = true/false Appbar,當用戶使用鼠標右鍵單擊時。
如何克服這個問題?
更新2
我幾乎AppBar與AppBar的ISOPEN = 「true」 和IsSticky = 「真」 屬性解決了這個問題。
更多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」屬性,則問題再次出現。
在此先感謝!
感謝您的問題 - 和更新。我有點迷失在哪裏開始回答這個問題。一個基本的答案是,使用Mvx的主控細節絕對是可能的 - 但它絕對需要一個自定義的演示者(自定義導航服務)。對於appbar,並沒有一個真正的標準答案 - 通常我會逐頁操作它,但如果這不可能,那麼後臺的信使和/或代碼似乎是一個好方法。對不起,我無法正式回答 - 我在這裏沒有標準答案。它的代碼和應用程序是國王。 – Stuart