首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Windows 8 應用程式開發實戰:設定合約與漫遊設定

     編輯:關於.NET

Windows 8 設定合約提供統一的應用程式設定進入點(Win+I)。本實驗示範:在設定窗格加入「關於」與「偏好設定」命令、使用 Callisto 控制項庫的 SettingsFlyout 顯示內容、以漫遊設定同步使用者偏好、實作「記住上次位置」功能。

練習 1:加入關於頁面

  1. 在 App.xaml.cs 註冊 SettingsPane.CommandsRequested:
SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;

void OnCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
{
    var about = new SettingsCommand("about", "About", handler => {
        var flyout = new SettingsFlyout {
            Content = new AboutUserControl(),
            HeaderBrush = new SolidColorBrush(_background),
            Background = new SolidColorBrush(_background),
            HeaderText = "About",
            IsOpen = true
        };
    });
    args.Request.ApplicationCommands.Add(about);
}
  1. 建立 AboutUserControl.xaml:
<StackPanel>
    <TextBlock Text="Contoso Cookbook" FontSize="26.667" FontWeight="SemiLight"/>
    <TextBlock Text="Trial Version" FontSize="18" FontWeight="SemiLight"/>
</StackPanel>

練習 2:加入偏好設定頁面

  1. 同樣在 OnCommandsRequested 加入 Preferences 命令,內容為 PreferencesUserControl。
  2. PreferencesUserControl.xaml:
<ToggleSwitch x:Name="Remember" Header="Remember where I was" Toggled="OnToggled"/>
  1. 切換時儲存至漫遊設定:
private void OnToggled(object sender, RoutedEventArgs e)
{
    ApplicationData.Current.RoamingSettings.Values["Remember"] = Remember.IsOn;
}
  1. 載入時還原:
if (ApplicationData.Current.RoamingSettings.Values.ContainsKey("Remember"))
    Remember.IsOn = (bool)ApplicationData.Current.RoamingSettings.Values["Remember"];

練習 3:實作「記住上次位置」

Visual Studio 範本內建 SuspensionManager 處理暫停/終止時的導航狀態保存與還原。我們在 OnLaunched 依使用者偏好決定是否還原:

if (args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
{
    if (ApplicationData.Current.RoamingSettings.Values.ContainsKey("Remember"))
    {
        bool remember = (bool)ApplicationData.Current.RoamingSettings.Values["Remember"];
        if (remember) await SuspensionManager.RestoreAsync();
    }
}

關鍵概念

概念說明
SettingsPane系統級設定容器,應用程式透過 CommandsRequested 加入命令
SettingsFlyoutCallisto 提供的飛出面板,適合顯示設定頁面
RoamingSettings漫遊設定,自動同步至使用者的其他 Windows 8 裝置(~100KB 配額)
SuspensionManager序列化 Frame 導航堆疊,支援暫停/終止/關閉後還原
ApplicationExecutionState.ClosedByUser使用者主動關閉(Alt+F4 或下滑),非系統終止

測試步驟

  1. 啟用「Remember where I was」,瀏覽至食譜頁面。
  2. Alt+F4 關閉應用程式(不要用 VS 停止偵錯)。
  3. 重新啟動 → 應自動導航至上次食譜頁面。
  4. 關閉偏好設定 → 重複步驟 → 應回到首頁。

最佳實務

  • 設定頁面盡量簡潔,避免複雜巢狀導航。
  • 漫遊設定僅存放小型偏好資料,大量資料改用 RoamingFolder。
  • 離線時漫遊資料會先存在本地,上線後自動同步。
  • Callisto 庫已停止維護,新專案建議改用 Microsoft.Toolkit.Uwp.UI.Controls.SettingsCard 或原生 SettingsFlyout (WinUI 3)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved