[Windows 8 App]Setting Charm

[Windows 8 App]Setting Charm

 

這次介紹在專案中的【App.xaml.cs】裡設置Setting Charm

首先開啟專案,開啟在【方案總管】裡的【App.xaml.cs】

96

 

 

在前端using部分

需要using 兩行程式碼

第一:using Windows.UI.ApplicationSettings;

第二:using Windows.UI.Popups;

找到 sealed partial class App : Application{} 這裡面新增以下程式碼即可


private void OnCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
        {
            UICommandInvokedHandler handler =
                     new UICommandInvokedHandler(onSettingsCommand);

            SettingsCommand privacy1Command =
                     new SettingsCommand("privacystatementPage", "隱私權原則", handler);

            args.Request.ApplicationCommands.Add(privacy1Command);
        }
        async void onSettingsCommand(IUICommand command)
        {
            SettingsCommand settingsCommand = (SettingsCommand)command;
            if (settingsCommand.Id.ToString().Equals("privacystatementPage"))
            {
                var success =
                     await Windows.System.Launcher.LaunchUriAsync(
                             new Uri(@"http://frank12690.pixnet.net/blog/post/23883682"));
            }
        }

 

看到最後一行的

await Windows.System.Launcher.LaunchUriAsync(new Uri(@"http://frank12690.pixnet.net/blog/post/23883682"));

紅色底線換成你所宣告的隱私權

 

然後,還有一行需要新增

找到下面的protected override void OnLaunched(LaunchActivatedEventArgs args)之後

 

protected override void OnLaunched(LaunchActivatedEventArgs args)

        {

           ……

           …… 

           SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;
        }

 

新增紅色那行程式碼

 

 

以下是初始的【App.xaml.cs】設置【Setting Charm】後的程式碼:


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.ApplicationSettings;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// 空白應用程式範本已記錄在 http://go.microsoft.com/fwlink/?LinkId=234227

namespace App1
{
    /// <summary>
    /// 提供應用程式專屬行為以補充預設的應用程式類別。
    /// </summary>
    sealed partial class App : Application
    {
        /// <summary>
        /// 初始化單一應用程式物件。這是第一行執行之撰寫程式碼,
        /// 而且其邏輯相當於 main() 或 WinMain()。
        /// </summary>
        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }

        /// <summary>
        /// 在應用程式由使用者正常啟動時叫用。其他進入點
        /// 將在啟動應用程式以開啟特定檔案時使用,以顯示
        /// 搜尋結果等。
        /// </summary>
        /// <param name="args">關於啟動要求和處理序的詳細資料。</param>
        protected override void OnLaunched(LaunchActivatedEventArgs args)
        {
            Frame rootFrame = Window.Current.Content as Frame;

            // 當視窗已經有內容時,不重複應用程式初始化,
            // 只確定視窗是作用中
            if (rootFrame == null)
            {
                // 建立框架做為巡覽內容,並巡覽至第一頁
                rootFrame = new Frame();

                if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: 從之前暫停的應用程式載入狀態
                }

                // 將框架放在目前視窗中
                Window.Current.Content = rootFrame;
            }

            if (rootFrame.Content == null)
            {
                // 在巡覽堆疊未還原時,巡覽至第一頁,
                // 設定新的頁面,方式是透過傳遞必要資訊做為巡覽
                // 參數
                if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
                {
                    throw new Exception("Failed to create initial page");
                }
            }
            // 確定目前視窗是作用中
            Window.Current.Activate();
            SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;
        }

        /// <summary>
        /// 在應用程式暫停執行時叫用。應用程式狀態會儲存起來,
        /// 但不知道應用程式即將結束或繼續,而且仍將記憶體
        /// 的內容保持不變。
        /// </summary>
        /// <param name="sender">暫停之要求的來源。</param>
        /// <param name="e">有關暫停之要求的詳細資料。</param>
        private void OnSuspending(object sender, SuspendingEventArgs e)
        {
            var deferral = e.SuspendingOperation.GetDeferral();
            //TODO: 儲存應用程式狀態,並停止任何背景活動
            deferral.Complete();
        }
        private void OnCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
        {
            UICommandInvokedHandler handler =
                     new UICommandInvokedHandler(onSettingsCommand);

            SettingsCommand privacy1Command =
                     new SettingsCommand("privacystatementPage", "隱私權原則", handler);

            args.Request.ApplicationCommands.Add(privacy1Command);
        }
        async void onSettingsCommand(IUICommand command)
        {
            SettingsCommand settingsCommand = (SettingsCommand)command;
            if (settingsCommand.Id.ToString().Equals("privacystatementPage"))
            {
                var success =
                     await Windows.System.Launcher.LaunchUriAsync(
                             new Uri(@"http://frank12690.pixnet.net/blog/post/23883682"));
            }
        }
    }
}

 

參考來源:http://blogs.msdn.com/b/mengtsai/archive/2013/01/02/50-windows-store-app.aspx