簡體   English   中英

UWP應用架構困境

[英]UWP app architecture dilemma

我是UWP開發(針對手機的設計)的新手,現在我正在使用它開發一個應用程序(具有Android開發經驗)。 該應用程序被設計為單頁應用程序,具有地圖以及大量其他菜單,按鈕和字段:它們根據某種邏輯出現和消失。 其中許多控件用於渲染或填充運行時(如果可能的話,不使用xaml,僅在c#中使用xaml,如果可能的話,使用viewmodel),因為它是從API加載的。 難題是頁面類(也就是xaml類)會越來越大,我不確定如何正確地將其分開(我不是指部分類),因為並不是所有這些控件都在應用程序啟動時加載(現在它們是,我崩潰/可見需要)。 例如,在Android術語中,有片段可以用動畫等替換/疊加。現在,我有一個擴展類,可以與API交互,僅向頁面類發送回調,但這還不夠=)

降低頁面復雜度的一種方法是將其分為單獨的UserControls 將其與MVVM模式相結合,還可以在多個視圖模型類中分離視圖邏輯。

舉例來說,假設您的頁面中有一個主要的細節布局,假設此視圖顯示了用戶信息。 您將擁有三個單獨的視圖:

  • UserView(繼承頁面)-Android中的活動
  • UserListView(繼承自UserControl)-Android中的片段
  • UserDetailsView(繼承自UserControl)-Android中的片段

以及三個單獨的視圖模型。 這種模式存在一些挑戰:

通訊

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

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

  • 視圖通過方法和依賴項屬性直接相互調用
  • 視圖通過模型間接通信
  • 視圖通過其視圖模型對象進行間接通信

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

共享的UI資源

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

您可以使用MVVM模式分離邏輯。

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

您可以使用Binding或x:Bind使用XAML的功能根據業務規則隱藏或顯示控件。

使用MVVM模式是創建基於XAML的應用程序(如UWP,WPF)的最佳實踐。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM