欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

UWP 律师信息 MVVM 2.0版本

程序员文章站 2022-06-22 12:30:53
由于1.0版本存在一个很大的BUG,一直也没有找到问题所在,后来,一位在微软的朋友说,他们的测试小妹给出的结果是框架的问题,所以,就直接整体重构了代码,也布局设计上,由跳转页面变为了UWP常见的左侧列表,右侧详细内容。 因为要用左右的这种结构,所以,就需要启用标题栏的后退按钮,要不然,在每个页面上的 ......

由于1.0版本存在一个很大的BUG,一直也没有找到问题所在,后来,一位在微软的朋友说,他们的测试小妹给出的结果是框架的问题,所以,就直接整体重构了代码,也布局设计上,由跳转页面变为了UWP常见的左侧列表,右侧详细内容。

UWP 律师信息 MVVM 2.0版本

UWP 律师信息 MVVM 2.0版本

因为要用左右的这种结构,所以,就需要启用标题栏的后退按钮,要不然,在每个页面上的,就比较难看(具体实现方法,请看源码,或自行百度)

SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = slaveFrame.CanGoBack ? AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed;

具体,在什么位置调用,这个要因项目而定,网上好多都是在APP文件里面做的

 UWP 律师信息 MVVM 2.0版本    UWP 律师信息 MVVM 2.0版本

因为可以放大和缩小,放大还好说,怎么都能显示,但是缩小的话,可能右侧也就不见了,所以,当缩小到一定范围的时候,需要做处理

参见了文章里的MasterDetail一节,通过这是Grid的ColumnDefinition和Canvas.ZIndex来实现的

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="{x:Bind VM.MasterGrid,Mode=OneWay}" />
    <ColumnDefinition Width="{x:Bind VM.DetailGrid,Mode=OneWay}" />
  </Grid.ColumnDefinitions>
  <Frame Name="mainFrame" Canvas.ZIndex="{x:Bind VM.ZMainFrame,Mode=OneWay}" MaxWidth="500" />
  <Frame Name="slaveFrame" BorderThickness="1" BorderBrush="{ThemeResource SystemControlBackgroundAccentBrush}" Grid.Column="{x:Bind VM.GridInt,Mode=OneWay}" Canvas.ZIndex="{x:Bind VM.ZSlaveFrame,Mode=OneWay}" />
</Grid>

UWP 律师信息 MVVM 2.0版本UWP 律师信息 MVVM 2.0版本

适配手机端的时候,第一次,没有发现状态栏被盖住了,就是没有显示出系统的状态栏,上面是纯白色的,处理方法如下

if (ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar"))
{
    var statusbar = StatusBar.GetForCurrentView();
    await statusbar.ShowAsync();
    statusbar.BackgroundColor = Colors.White;
    statusbar.BackgroundOpacity = 1;
    statusbar.ForegroundColor = Colors.Black;
}

由于,2.0版本相较于1.0版本,除了在数据请求上和VM的大致写法上相一致,剩下的改动还是很大的,所以,重新在上提交了一份代码。