UWP 實現Tab導航首頁

来源:http://www.cnblogs.com/xiaocaidev/archive/2017/06/18/7044206.html
-Advertisement-
Play Games

先看效果: 這個是用Pivot來實現 1、自定義Pivot的樣式,使用Blend工具生成模板,將HeaderTemplate的佈局都隱藏 1 <Style x:Key="PivotStyle1" TargetType="Pivot"> 2 <Setter Property="Margin" Valu ...


先看效果:

這個是用Pivot來實現

1、自定義Pivot的樣式,使用Blend工具生成模板,將HeaderTemplate的佈局都隱藏

  1 <Style x:Key="PivotStyle1" TargetType="Pivot">
  2         <Setter Property="Margin" Value="0"/>
  3         <Setter Property="Padding" Value="0"/>
  4         <Setter Property="Background" Value="{ThemeResource PivotBackground}"/>
  5         <Setter Property="IsTabStop" Value="False"/>
  6         <Setter Property="ItemsPanel">
  7             <Setter.Value>
  8                 <ItemsPanelTemplate>
  9                     <Grid/>
 10                 </ItemsPanelTemplate>
 11             </Setter.Value>
 12         </Setter>
 13         <Setter Property="Template">
 14             <Setter.Value>
 15                 <ControlTemplate TargetType="Pivot">
 16                     <Grid x:Name="RootElement" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">
 17                         <Grid.Resources>
 18                             <Style x:Key="BaseContentControlStyle" TargetType="ContentControl">
 19                                 <Setter Property="FontFamily" Value="XamlAutoFontFamily"/>
 20                                 <Setter Property="FontWeight" Value="SemiBold"/>
 21                                 <Setter Property="FontSize" Value="15"/>
 22                                 <Setter Property="Template">
 23                                     <Setter.Value>
 24                                         <ControlTemplate TargetType="ContentControl">
 25                                             <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" OpticalMarginAlignment="TrimSideBearings" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
 26                                         </ControlTemplate>
 27                                     </Setter.Value>
 28                                 </Setter>
 29                             </Style>
 30                             <Style x:Key="TitleContentControlStyle" BasedOn="{StaticResource BaseContentControlStyle}" TargetType="ContentControl">
 31                                 <Setter Property="FontFamily" Value="{ThemeResource PivotTitleFontFamily}"/>
 32                                 <Setter Property="FontWeight" Value="{ThemeResource PivotTitleThemeFontWeight}"/>
 33                                 <Setter Property="FontSize" Value="{ThemeResource PivotTitleFontSize}"/>
 34                             </Style>
 35                         </Grid.Resources>
 36                         <Grid.RowDefinitions>
 37                             <RowDefinition Height="Auto"/>
 38                             <RowDefinition Height="*"/>
 39                         </Grid.RowDefinitions>
 40                         <VisualStateManager.VisualStateGroups>
 41                             <VisualStateGroup x:Name="Orientation">
 42                                 <VisualState x:Name="Portrait">
 43                                     <Storyboard>
 44                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" Storyboard.TargetName="TitleContentControl">
 45                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotPortraitThemePadding}"/>
 46                                         </ObjectAnimationUsingKeyFrames>
 47                                     </Storyboard>
 48                                 </VisualState>
 49                                 <VisualState x:Name="Landscape">
 50                                     <Storyboard>
 51                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" Storyboard.TargetName="TitleContentControl">
 52                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotLandscapeThemePadding}"/>
 53                                         </ObjectAnimationUsingKeyFrames>
 54                                     </Storyboard>
 55                                 </VisualState>
 56                             </VisualStateGroup>
 57                             <VisualStateGroup x:Name="NavigationButtonsVisibility">
 58                                 <VisualState x:Name="NavigationButtonsHidden"/>
 59                                 <VisualState x:Name="NavigationButtonsVisible">
 60                                     <Storyboard>
 61                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="NextButton">
 62                                             <DiscreteObjectKeyFrame KeyTime="0" Value="1"/>
 63                                         </ObjectAnimationUsingKeyFrames>
 64                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="NextButton">
 65                                             <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
 66                                         </ObjectAnimationUsingKeyFrames>
 67                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PreviousButton">
 68                                             <DiscreteObjectKeyFrame KeyTime="0" Value="1"/>
 69                                         </ObjectAnimationUsingKeyFrames>
 70                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="PreviousButton">
 71                                             <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
 72                                         </ObjectAnimationUsingKeyFrames>
 73                                     </Storyboard>
 74                                 </VisualState>
 75                                 <VisualState x:Name="PreviousButtonVisible">
 76                                     <Storyboard>
 77                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PreviousButton">
 78                                             <DiscreteObjectKeyFrame KeyTime="0" Value="1"/>
 79                                         </ObjectAnimationUsingKeyFrames>
 80                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="PreviousButton">
 81                                             <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
 82                                         </ObjectAnimationUsingKeyFrames>
 83                                     </Storyboard>
 84                                 </VisualState>
 85                                 <VisualState x:Name="NextButtonVisible">
 86                                     <Storyboard>
 87                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="NextButton">
 88                                             <DiscreteObjectKeyFrame KeyTime="0" Value="1"/>
 89                                         </ObjectAnimationUsingKeyFrames>
 90                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="NextButton">
 91                                             <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
 92                                         </ObjectAnimationUsingKeyFrames>
 93                                     </Storyboard>
 94                                 </VisualState>
 95                             </VisualStateGroup>
 96                             <VisualStateGroup x:Name="HeaderStates">
 97                                 <VisualState x:Name="HeaderDynamic"/>
 98                                 <VisualState x:Name="HeaderStatic">
 99                                     <Storyboard>
100                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="Header">
101                                             <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
102                                         </ObjectAnimationUsingKeyFrames>
103                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="StaticHeader">
104                                             <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
105                                         </ObjectAnimationUsingKeyFrames>
106                                     </Storyboard>
107                                 </VisualState>
108                             </VisualStateGroup>
109                         </VisualStateManager.VisualStateGroups>
110                         <ContentControl x:Name="TitleContentControl" ContentTemplate="{TemplateBinding TitleTemplate}" Content="{TemplateBinding Title}" IsTabStop="False" Margin="{StaticResource PivotPortraitThemePadding}" Style="{StaticResource TitleContentControlStyle}" Visibility="Collapsed"/>
111                         <Grid Grid.Row="1">
112                             <Grid.Resources>
113                                 <ControlTemplate x:Key="NextTemplate" TargetType="Button">
114                                     <Border x:Name="Root" BorderBrush="{ThemeResource PivotNextButtonBorderBrush}" BorderThickness="{ThemeResource PivotNavButtonBorderThemeThickness}" Background="{ThemeResource PivotNextButtonBackground}">
115                                         <VisualStateManager.VisualStateGroups>
116                                             <VisualStateGroup x:Name="CommonStates">
117                                                 <VisualState x:Name="Normal"/>
118                                                 <VisualState x:Name="PointerOver">
119                                                     <Storyboard>
120                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root">
121                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotNextButtonBackgroundPointerOver}"/>
122                                                         </ObjectAnimationUsingKeyFrames>
123                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Root">
124                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotNextButtonBorderBrushPointerOver}"/>
125                                                         </ObjectAnimationUsingKeyFrames>
126                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow">
127                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotNextButtonForegroundPointerOver}"/>
128                                                         </ObjectAnimationUsingKeyFrames>
129                                                     </Storyboard>
130                                                 </VisualState>
131                                                 <VisualState x:Name="Pressed">
132                                                     <Storyboard>
133                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root">
134                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotNextButtonBackgroundPressed}"/>
135                                                         </ObjectAnimationUsingKeyFrames>
136                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Root">
137                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotNextButtonBorderBrushPressed}"/>
138                                                         </ObjectAnimationUsingKeyFrames>
139                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow">
140                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotNextButtonForegroundPressed}"/>
141                                                         </ObjectAnimationUsingKeyFrames>
142                                                     </Storyboard>
143                                                 </VisualState>
144                                             </VisualStateGroup>
145                                         </VisualStateManager.VisualStateGroups>
146                                         <FontIcon x:Name="Arrow" Foreground="{ThemeResource PivotNextButtonForeground}" FontSize="12" FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE0E3;" HorizontalAlignment="Center" MirroredWhenRightToLeft="True" UseLayoutRounding="False" VerticalAlignment="Center"/>
147                                     </Border>
148                                 </ControlTemplate>
149                                 <ControlTemplate x:Key="PreviousTemplate" TargetType="Button">
150                                     <Border x:Name="Root" BorderBrush="{ThemeResource PivotPreviousButtonBorderBrush}" BorderThickness="{ThemeResource PivotNavButtonBorderThemeThickness}" Background="{ThemeResource PivotPreviousButtonBackground}">
151                                         <VisualStateManager.VisualStateGroups>
152                                             <VisualStateGroup x:Name="CommonStates">
153                                                 <VisualState x:Name="Normal"/>
154                                                 <VisualState x:Name="PointerOver">
155                                                     <Storyboard>
156                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root">
157                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotPreviousButtonBackgroundPointerOver}"/>
158                                                         </ObjectAnimationUsingKeyFrames>
159                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Root">
160                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotPreviousButtonBorderBrushPointerOver}"/>
161                                                         </ObjectAnimationUsingKeyFrames>
162                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow">
163                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotPreviousButtonForegroundPointerOver}"/>
164                                                         </ObjectAnimationUsingKeyFrames>
165                                                     </Storyboard>
166                                                 </VisualState>
167                                                 <VisualState x:Name="Pressed">
168                                                     <Storyboard>
169                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Root">
170                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotPreviousButtonBackgroundPressed}"/>
171                                                         </ObjectAnimationUsingKeyFrames>
172                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Root">
173                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotPreviousButtonBorderBrushPressed}"/>
174                                                         </ObjectAnimationUsingKeyFrames>
175                                                         <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="Arrow">
176                                                             <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource PivotPreviousButtonForegroundPressed}"/>
177                                                         </ObjectAnimationUsingKeyFrames>
178                                                     </Storyboard>
179                                                 </VisualState>
180                                             </VisualStateGroup>
181                                         </VisualStateManager.VisualStateGroups>
182                                         <FontIcon x:Name="Arrow" Foreground="{ThemeResource PivotPreviousButtonForeground}" FontSize="12" FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE0E2;" HorizontalAlignment="Center" MirroredWhenRightToLeft="True" UseLayoutRounding="False" VerticalAlignment="Center"/>
183                                     </Border>
184                                 </ControlTemplate>
185                             </Grid.Resources>
186                             <ScrollViewer x:Name="ScrollViewer" BringIntoViewOnFocusChange="False" HorizontalSnapPointsAlignment="Center" HorizontalSnapPointsType="MandatorySingle" HorizontalScrollBarVisibility="Hidden" Margin="{TemplateBinding Padding}" Template="{StaticResource ScrollViewerScrollBarlessTemplate}" VerticalSnapPointsType="None" VerticalScrollBarVisibility="Disabled" VerticalScrollMode="Disabled" VerticalContentAlignment="Stretch" ZoomMode="Disabled">
187                                 <PivotPanel x:Name="Panel" VerticalAlignment="Stretch">
188                                     <Grid x:Name="PivotLayoutElement">
189                                         <Grid.ColumnDefinitions>
190                                             <ColumnDefinition Width="Auto"/>
191                                             <ColumnDefinition Width="*"/>
192                                             <ColumnDefinition Width="Auto"/>
193                                         </Grid.ColumnDefinitions>
194                                         <Grid.RowDefinitions>
195                                             <RowDefinition Height="Auto"/>
196                                             <RowDefinition Height="*"/>
197                                         </Grid.RowDefinitions>
198                                         <Grid.RenderTransform>
199                                             <CompositeTransform x:Name="PivotLayoutElementTranslateTransform"/>
200                                         </Grid.RenderTransform>
201                                         <ContentPresenter Visibility="Collapsed" x:Name="LeftHeaderPresenter" ContentTemplate="{TemplateBinding LeftHeaderTemplate}" Content="{TemplateBinding LeftHeader}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
202                                         <ContentControl x:Name="HeaderClipper" Grid.Column="1" HorizontalContentAlignment="Stretch" UseSystemFocusVisuals="True">
203                                             <ContentControl.Clip>
204                                                 <RectangleGeometry x:Name="HeaderClipperGeometry"/>
205                                             </ContentControl.Clip>
206                                             <Grid Background="{ThemeResource PivotHeaderBackground}">
207                                                 <Grid.RenderTransform>
208                                                     <CompositeTransform x:Name="HeaderOffsetTranslateTransform"/>
209                                                 </Grid.RenderTransform>
210                                                 <PivotHeaderPanel x:Name="StaticHeader">
211                                                     <PivotHeaderPanel.RenderTransform>
212                                                         <CompositeTransform x:Name="StaticHeaderTranslateTransform"/>
213                                                     </PivotHeaderPanel.RenderTransform>
214                                                 </PivotHeaderPanel>
215                                                 <PivotHeaderPanel x:Name="Header">
216                                                     <PivotHeaderPanel.RenderTransform>
217                                                         <CompositeTransform x:Name="HeaderTranslateTransform"/>
218                                                     </PivotHeaderPanel.RenderTransform>
219                                                 </PivotHeaderPanel>
220                                             </Grid>
221                                         </ContentControl>
222                                         <Button Visibility="Collapsed" x:Name="PreviousButton" Background="Transparent" Grid.Column="1" HorizontalAlignment="Left" Height="36" IsTabStop="False" IsEnabled="False" Margin="{ThemeResource PivotNavButtonMargin}" Opacity="0" Template="{StaticResource PreviousTemplate}" UseSystemFocusVisuals="False" VerticalAlignment="Top" Width="20"/>
223                                         <Button Visibility="Collapsed" x:Name="NextButton" Background="Transparent" Grid.Column="1" HorizontalAlignment="Right" Height="36" IsTabStop="False" IsEnabled="False" Margin="{ThemeResource PivotNavButtonMargin}" Opacity="0" Template="{StaticResource NextTemplate}" UseSystemFocusVisuals="False" VerticalAlignment="Top" Width="20"/>
224                                         <ContentPresenter Visibility="Collapsed" x:Name="RightHeaderPresenter" ContentTemplate="{TemplateBinding RightHeaderTemplate}" Content="{TemplateBinding RightHeader}" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
225                                         <ItemsPresenter Visibility="Collapsed" x:Name="PivotItemPresenter" Grid.ColumnSpan="3" Grid.Row="1">
226                                             <ItemsPresenter.RenderTransform>
227                                                 <TransformGroup>
228                                                     <TranslateTransform x:Name="ItemsPresenterTranslateTransform"/>
229                                                     <CompositeTransform x:Name="ItemsPresenterCompositeTransform"/>
230                                                 </TransformGroup>
231                                             </ItemsPresenter.RenderTransform>
232                                         </ItemsPresenter>
233                                     </Grid>
234                                 </PivotPanel>
235                             </ScrollViewer>
236                         </Grid>
237                     </Grid>
238                 </ControlTemplate>
239             </Setter.Value>
240         </Setter>
241     </Style>
View Code

2、首頁TabPage.xaml佈局

  1 <Page
  2     x:Class="Demo.UWP.Views.TabPage	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、微信開發者工具報錯,微信小程式最低需支持tls1.2版本的問題 原因是伺服器不支持ssl的高版本,解決方法: 在/etc/nginx/conf.d文件下,把"ssl_protocols TLSv1;"修改成:"ssl_protocols TLSv1 TLSv1.1 TLSv1.2;",然後重啟n ...
  • 表單:<input type="text" name="" value="" size="顯示字元數" maxlength="最多字元數" readonly="readonly只讀" disabled="disabled"不可操作未激活 placeholder="Search W3School"> ...
  • 瀏覽器最核心的部分是渲染引擎(Rendering Engine),我們一般習慣稱之為“瀏覽器內核”,其負責解析網頁語法(如標準通用標記語言的子集HTML、JavaScript)並渲染、展示網頁。因此,所謂的瀏覽器內核通常也就是指瀏覽器所採用的渲染引擎,渲染引擎決定了瀏覽器如何顯示網頁的內容以及頁面的 ...
  • angualrjs處於安全的考慮,插值 指令會對相應字元串進行過濾,避免出現html攻擊。但是在一些時候,我們需要渲染html,比如實現一個分級的下拉框,代碼如下: 1 <body ng-app="app" ng-controller="controller"> 2 <select ng-model ...
  • HTML 和 HTML 列表 HTML 類 可以通過 和 將 HTML 元素組合起來。 HTML 塊元素 大多數 HTML 元素被定義為塊級元素或內聯元素。 編者註:"塊級元素"譯為 block level element,"內聯元素"譯為 inline element。 塊級元素在瀏覽器顯示時,通... ...
  • getMeasuredWidth 為view的測量寬度。 getWidth為view的最終寬度。 (這裡只討論寬度,高度也是一樣的道理) 那麼它們之間有什麼區別呢? 測量寬度是在view的measure過程中形成的,而最終寬度是view的layout過程中形成的。這是它們之間的區別,它們的大小在大多 ...
  • 1、DeviceFamily-Type文件夾 將Index.xaml拷貝到DeviceFamily-Desktop 和DeviceFamily-Mobile,刪除這2個目錄下的Index.xmal.cs 文件。 2、DeviceFamily-Type擴展 通過創建新的XAML視圖達到同樣的效果,使用 ...
  • 很多初學者都會犯一個錯誤 ,就是在onCreate或者onStart裡面去獲取view的大小,然而這樣獲取到的寬高通常都是0,為什麼呢?因為view的測量過程和activity的生命周期不是同步的,因此無法保證執行了onCreate、onStart、onResume的時候view已經測量完畢。如果還 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...