由於1.0版本存在一個很大的BUG,一直也沒有找到問題所在,後來,一位在微軟的朋友說,他們的測試小妹給出的結果是框架的問題,所以,就直接整體重構了代碼,也佈局設計上,由跳轉頁面變為了UWP常見的左側列表,右側詳細內容。 因為要用左右的這種結構,所以,就需要啟用標題欄的後退按鈕,要不然,在每個頁面上的 ...
由於1.0版本存在一個很大的BUG,一直也沒有找到問題所在,後來,一位在微軟的朋友說,他們的測試小妹給出的結果是框架的問題,所以,就直接整體重構了代碼,也佈局設計上,由跳轉頁面變為了UWP常見的左側列表,右側詳細內容。
因為要用左右的這種結構,所以,就需要啟用標題欄的後退按鈕,要不然,在每個頁面上的,就比較難看(具體實現方法,請看源碼,或自行百度)
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = slaveFrame.CanGoBack ? AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed;
具體,在什麼位置調用,這個要因項目而定,網上好多都是在APP文件裡面做的
因為可以放大和縮小,放大還好說,怎麼都能顯示,但是縮小的話,可能右側也就不見了,所以,當縮小到一定範圍的時候,需要做處理
參見了http://lindexi.oschina.io/lindexi/post/win10-uwp-MVVM%E5%85%A5%E9%97%A8/文章里的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>
適配手機端的時候,第一次,沒有發現狀態欄被蓋住了,就是沒有顯示出系統的狀態欄,上面是純白色的,處理方法如下
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的大致寫法上相一致,剩下的改動還是很大的,所以,重新在GitHub上提交了一份代碼。