UWP应用程序架构困境

时间:2017-06-22 14:56:01

标签: windows uwp

我是UWP开发的新手(设计目标手机),现在我正在使用它开发一个应用程序(具有Android开发经验)。应用程序被设计为单页应用程序,它有一个地图和大量的其他菜单,按钮和字段:它们基于某些逻辑出现和消失。其中许多控制着渲染或填充运行时(没有/部分使用xaml,只是在c#中,如果可能的话,使用了viewmodel),因为它是从API加载的。困境是页面类(也作为xaml one)将变得越来越大,我不确定如何正确地分离这个(我不是意味着部分类),因为并非所有这些控件都在应用程序启动时加载(现在它们是,我崩溃/可见需要)。例如,在Android术语中,片段可以用动画等替换/叠加彼此。现在我有一个扩展类,我与API交互,只发送回调到页面类,但这还不够=)

2 个答案:

答案 0 :(得分:2)

降低页面复杂性的一种方法是将其分解为单独的UserControls。将其与MVVM pattern相结合,您还可以在多个视图模型类中分离视图逻辑。

例如,假设您的页面中有一个主要的详细信息布局,请假设此视图显示用户信息。您将有三个单独的视图:

  • UserView(继承页面) - android中的活动
  • UserListView(继承UserControl) - android中的片段
  • UserDetailsView(继承UserControl) - android中的片段

以及三个独立的视图模型。这种模式存在一些挑战:

<强>通信

您的观点需要相互沟通。例如,当您在UserListView中选择用户时,UserDetailsView需要更新并显示所选用户的详细信息。

这些观点之间至少有三种沟通方式:

  • 视图通过方法和依赖项属性直接相互调用
  • 视图通过模型间接沟通
  • 视图通过视图模型对象间接通信

我通常选择第一种和第二种方法而不是第三种方法。

共享用户界面资源

页面中的视图可能希望使用页面中的共享资源,例如命令栏。例如,UserListView可能需要在命令栏上有一个Add(+)按钮,UserDetailsView也可能需要几个按钮。对你来说,处理这种情况将是一个挑战。

答案 1 :(得分:0)

您可以使用MVVM Pattern分离逻辑。

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

您可以使用XAML的强大功能根据业务规则隐藏或显示您的控件,使用Binding或x:Bind

使用MVVM Pattern是创建基于XAML的应用程序(如UWP,WPF)的最佳实践。