WindowsPhoneToolkit 紹介 その1 ToggleSwitch

水曜日 , 22, 2月 2012 Leave a comment

Windows Phoneにコントロールや機能を追加するツールとしてSilverlight for Windows Phone Toolkitがあります。

 

ともすれば、どのような機能があったのか忘れがちなので、ちょっとずつ備忘録代わりに書き綴っていく。 第一回はToggleSwitch

これはオフの場合

 

こちらはオンの場合

 

 上の画像のようにオン・オフを表現することができる。

 2つのステートを持つ点ではチェックボックスと近しい機能のコントロールだが、 スライドして変更するあたりはよりメトロ的というかスマフォ的。

 

ToggleSwitchを利用する

 

  ToggleSwitchを利用するには当然だがSilverlight for Windows Phone Toolkitがインストールされていることが前提となる。

 コントロールとして追加したいXAMLコードの頭に以下を追加する

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

 

 XAMLにコントロールを追加するコードは以下、

 

<toolkit:ToggleSwitch x:Name="toggle"
    Content="Sample1"
    IsChecked="True"
    Header="Header1"
/>

サンプル実行画面

 イベントを取得する

 

続いてトグルスイッチのオンオフを切り替えたときのイベントを設定する方法について。

 

スイッチのオンオフのイベント名はそれぞれCheckedとUncheckedです。

 

<toolkit:ToggleSwitch x:Name="toggleSwitch"
    Content="Sample1"
    IsChecked="True"
    Header="Header1"
    Unchecked="toggleSwitch_Unchecked"
    Checked="toggleSwitch_Checked"
/>

 

 合わせてコードビハインドにハンドラーを記述。

        /// <summary>
        /// トグルスイッチをオフにした際のイベントハンドラー
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toggleSwitch_Unchecked(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("トグルスイッチオフ!!");

            this.toggleSwitch.Foreground = new SolidColorBrush(Colors.Red);
        }

        /// <summary>
        /// トグルスイッチをオンにした際のイベントハンドラー
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toggleSwitch_Checked(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("トグルスイッチオン!!");

            this.toggleSwitch.Foreground = new SolidColorBrush(Colors.Blue);
        }

 

基本的なプロパティ

 IsChecked

 ToggleSwitchが選択されているかどうか。

 true、false、nullを値に持つ。

 

Header

 ヘッダー部分、メッセージやその他コントロールを入れることもできる。

 

Content

 コンテンツ部分、メッセージやその他コントロールを入れることもできる。

 

Header1がHeader、Sample1がContentプロパティ

ラジオボタンやテキストボックスを突っ込むこともできる

おもなイベントハンドラー

 

CheckedとUnchecked

 スイッチがオン、オフになったときに呼び出されるイベントハンラー。 コードは上記参照。

 

Indeterminateイベントハンドラー

 Indeterminate=”不定”な状態で呼び出されるようだが、GUI上から操作してもオン、オフにしかならない。

 プログラム上で無理やり発生させてみる。

 

        /// <summary>
        /// IsCheckedにnullを代入してIndeterminateイベントを起こすボタンイベントハンドラー
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this.toggleSwitch.IsChecked = null;
        }

デバッグが出るコードはサンプル(下リンク)を参照

 

booleanとnull許容型のboolean?の変換

 

ToggleSwitchコントロールのIsCheckedプロパティなどはnull許容型なのでboolean型に代入できない。

そういう場合

 

bool value = toggleSwitch.IsChecked ?? false;

 

と書くと、nullの場合falseが入る。

 

 

サンプルをダウンロードする(SDK7.1)

 (下部に見た目を弄ったToggleSwitchも置いておきました。参考にどうぞ)

 

これまでの記事を読む

 

 


Please give us your valuable comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です