繁体   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