2017-06-22 56 views
0

我是UWP開發人員(設計目標手機)的新手,現在我正在開發一個使用它的應用程序(在Android開發方面有經驗)。應用程序被設計爲單頁應用程序,其中有一張地圖和另外的菜單,按鈕和欄位:它們基於某種邏輯出現和消失。許多這樣的控件在運行時渲染或填充(如果可能的話viewmodel越來越多,不需要/部分使用xaml,只是在c#中),因爲它是從API加載的。困境是page class(也就是xaml one)越來越大,我不確定如何正確分離它(我不是指部分類),因爲並非所有這些控件都在應用程序啓動時加載(現在它們是,我崩潰/可見需要)。例如,在Android術語中,片段可以用動畫等替換/覆蓋彼此。現在,我有一個擴展類,在那裏我與API交互,並且只向頁面類發送回調,但這還不夠=)UWP應用程序架構困境

+1

降低頁面複雜度的一種方法是將其分解爲單獨的[UserControls](https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.usercontrol)。 –

+0

@Mehrzad Chehraz,我想到了自定義控件,但在我看來,它們似乎並不完全適合這種情況。我認爲自定義控件必須是可重用的,在我的情況下會有很多控件只是一次性使用邏輯。在Android的片段存在我的情況=)無論如何,這可能是解決方案,所以請通過它的意見作爲答案,所以可以標記它,如果我會滿意後嘗試=)(也許他們有一些問題,在點擊覆蓋或左右) – doubledeath

+0

我加了答案。然而,我無法理解你使用UserControl的問題,就像android中的片段一樣。如果你給我更多的細節,我會更新我的答案。 –

回答

1

降低頁面複雜度的一種方法是將其分解爲單獨的UserControls。結合MVVM pattern,你也可以在多視圖模型類中分離視圖邏輯。

作爲一個例子,假設您的頁面中有一個主細節佈局,假設此視圖顯示用戶信息。您將有三個不同的觀點:

  • 用戶視圖(繼承頁) - 活動在android系統
  • UserListView(繼承用戶控件) - 片段的Android
  • UserDetailsView(繼承用戶控件) - 片段的Android

以及三個獨立的視圖模型。有一些挑戰,這種模式:

你的觀點需要傳達給對方

通信。例如,當您在UserListView中選擇一個用戶時,UserDetailsView需要更新並顯示所選用戶的詳細信息。

至少有三種方式在這些視圖之間進行通信:

  • 瀏覽通過方法和依賴屬性直接調用彼此
  • 瀏覽通過模型
  • 視圖通過其視圖間接通信間接通信 - 模型物體

我通常選擇第一種和第二種方法,而不是第三種方法。

共享UI資源

視圖在一個頁面可能需要使用共享資源頁面,例如命令欄。例如,UserListView可能需要在命令欄上有一個Add(+)按鈕,而UserDetailsView也可能需要幾個按鈕。這將是你處理這種情況的挑戰。

0

您可以使用MVVM Pattern分離你的邏輯。

https://blogs.msdn.microsoft.com/johnshews_blog/2015/09/09/a-minimal-mvvm-uwp-app/

您可以使用XAML的力量來隱藏或顯示您根據需要控制的業務規則,使用綁定或x:綁定

使用MVVM模式是創建XAML基於應用的最佳實踐像UWP,WPF。

+0

正如你可以閱讀我已經在使用mvvm模式可能=)Dilema不是綁定或有點,它是控制和邏輯的數量。梅爾扎德Cherhaz建議一個很好的解決方案,我會去嘗試它,並關閉問題,如果這我會滿意。 – doubledeath