がりらぼ

WindowsRuntimeの応援ブログ

設定チャームに項目を追加する

設定チャーム

Windowsストアアプリのアプリ設定は、操作の共通化のために設定チャーム(Win+Cで出てくるチャームの設定項目)に置く必要があります。

2

設定チャームを押すことで呼ばれるフライアウトをSettingsPaneと呼び、項目はCommandと呼ばれます。

よって、SettingsPaneにCommandを追加していく形になります。

1

 

Command追加方法

Commandを追加するには、まずSettingsPaneのGetForCurrentViewで現在のSettingsPaneをよびだし、CommandRequestedに設定チャームが押されたときのメソッドを指定します。

//必ずアプリ内で一度だけ呼び出される部分に書く
SettingsPane pane=SettingsPane.GetForCurrentView();
pane.CommandsRequested+=Pane_CommandsRequested;

 

設定チャームがクリックされてCommandRequestedが呼ばれたときのメソッドでは、Commandを追加する処理を書きます。

コマンド自体はSettingsCommandで扱われ、初期化時にコマンドがクリックされたとき呼ばれるメソッドのハンドラを指定します。

private void Pane_CommandsRequested(object s, SettingsPaneCommandsRequestedEventArgs e)
{
    //設定チャームをクリックしたときに呼ばれる
    SettingsCommand sCommand1 = new SettingsCommand("command1","設定1",new UICommandInvokedHandler(PaneCommand1InvokedHandler));
    SettingsCommand sCommand2 = new SettingsCommand("command2", "設定2", new UICommandInvokedHandler(PaneCommand2InvokedHandler));
    
    e.Request.ApplicationCommands.Add(sCommand1);
    e.Request.ApplicationCommands.Add(sCommand2);
}

private void PaneCommand1InvokedHandler(IUICommand command)
{
    //設定1をクリックしたときに呼ばれる
    
}

private void PaneCommand2InvokedHandler(IUICommand command)
{
    //設定2をクリックしたときによばれる
    
}

 

これで設定チャームに項目を追加することができました。

 

設定チャームのCommandRequestedを登録する場所ですが、一度だけ呼ばれる場所なので、App.xaml.csのOnLaunchedメソッド内、if'(rootFrame==null)内が良いです。

3

 

もっと簡易化する

ラムダ式を使うことによってもっと簡単に実装することができます。

SettingsPane.GetForCurrentView().CommandsRequested += (s, args) =>
{
    args.Request.ApplicationCommands.Add(new SettingsCommand("sCommand1", "設定1",(command=>
    {
        //設定1がクリックされたときに呼ばれる。
    })));

    args.Request.ApplicationCommands.Add(new SettingsCommand("sCommand2", "設定2", (command =>
    {
        //設定2がクリックされたときに呼ばれる。
    })));

};

 

ユニバーサルアプリに対応する

WindowsPhone8.1に関しては設定チャームの概念はないのでif WINDOWS_APPディレクティブで処理をくくってやる必要があります。

#if WINDOWS_APP
                SettingsPane.GetForCurrentView().CommandsRequested += (s, args) =>
                {
                    args.Request.ApplicationCommands.Add(new SettingsCommand("sCommand1", "設定1", (command =>
                    {
                        //設定1がクリックされたときに呼ばれる。
                    })));

                    args.Request.ApplicationCommands.Add(new SettingsCommand("sCommand2", "設定2", (command =>
                    {
                        //設定2がクリックされたときに呼ばれる。
                    })));

                };
#endif

 

設定チャームに項目を追加する | garicchi.com