SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ComponentOne Studio)

ComponentOne Studioで他のWindowsストアアプリと差別化しよう

  • このエントリーをはてなブックマークに追加

 Windowsストアアプリの画面定義はXAMLで行います。XAMLは表現力の高い画面定義方法ですが、思った通りの画面が作れずに悩ましく感じてしまうときもあります。デスクトップアプリを作成していて標準機能で悩ましく感じたとき、いつも助けてくれたのは市販コントロールでした。それではWindowsストアアプリのときはどうでしょうか。Windowsストアアプリでも標準機能で悩ましく感じたときは、市販コントロールを探してみると良いでしょう。今回はComponentOne Studioに2014年1月30日に追加された「ComponentOne Studio for WinRT XAML」を使って、解決したいと思います。

  • このエントリーをはてなブックマークに追加

 ComponentOne Studio for WinRT XAMLは、すべてのコントロールがタッチ操作に対応しているだけではなく、Surface 2などのタブレット端末で採用されているWindows RTにも対応しています。

ComponentOne Studio for WinRT XAMLとは

 ComponentOne Studio for WinRT XAMLには、標準コントロールでは簡単に実現することが難しい機能を持った特徴的なコントロールやコンポーネントが多数収納されています。

表1 コンポーネント一覧
No コンポーネント 備考
1 Book 本のような見た目とページめくりをサポートしたコントロール
2 Calendar 月別のスケジュール表のようなUIを実現するコントロール
3 Chart 複合チャートなど日本的なグラフ要件にも対応できる高機能さを備えている
DirectX描画のグラフ用コントロール
4 CollectionView Windowsストアアプリのリストコントロールに、
ソート、フィルタ処理、グループ化機能を追加するクラス
5 DateTime Editors 日付と時間の表示/編集/検証が簡単に行えるコントロール
6 DropDown ドロップダウン部分に任意のコントロールを格納できるドロップダウンコントロール
7 Excel ExcelがなくてもExcelファイルを作成したり
既存のシートを編集したりできるコンポーネント
8 FlexGrid 表形式でデータを表示/編集可能なグリッドコントロール
9 Gauges 円形、直線型、ノブ型、範囲型、定規、速度計、ボリュームの
外観をもったゲージコントロール
10 Imaging WindowsストアアプリのImageコントロールの機能に加えて、
アニメーションGIFをサポートしたコントロール
11 Input 電話番号、パーセント、数値範囲、ファイルなどに対して
スマートな未入力方法をサポートしたマスク入力/数値入力コントロール
12 Layout Panels コンテンツを垂直または水平方向に折り返して配置するパネルコントロール
13 ListBox 水平または垂直方向、タイル表示など多彩な配置が可能なリストコントロール
14 Menus 階層メニューをサポートしたメニューコントロール
15 OrgChart 組織図や階層図を作成できるコントロール
16 PdfViewer PDFビューアがインストールされてなくても
PDF文書を表示、印刷、検索できるコントロール
17 RadialMenu Windowsストアアプリ版OneNoteにあるような円形メニューコントロール
18 RichTextBox HTMLやRTF文書を書式付で表示/編集するコントロール
19 Sparkline タイルの中などで使える軽量チャートコントロール
20 TabControl 上下左右に配置できるタブコントロール
21 Tiles ライブタイル表示が可能なタイルコントロール
22 TileView 最大、最少、デフォルトの3状態をサポートしたタイルコントロール
23 TreeView  標準コントロールにはないツリービューUIを実現するコントロール
24 Zip ファイルとフォルダーの圧縮をサポートしているZipコンポーネント

C1TileListBoxを使うには(基本編)

(※サンプルファイルの「CZ1402ListBox」に対応)

 何本かWindowsストアアプリを作成して、どうしてもコントロールだけではできなかったUIがあります。それがGridViewのスクロール方向を横や縦に動的に変更するものです。GridViewは、Windows 8のスタート画面などのようにコンテンツをタイル状に配置し横スクロールするデザインが実現できるコントロールです。

図1 GridViewの例
図1 GridViewの例

 また、ScrollViewerと組み合わせれば縦スクロールにも対応できますが、動的に縦スクロールと横スクロールを切り替えるには、VisualStateManagerなども駆使するなどXAMLの深い知識がないと実現が難しいのです。

 この悩みをやっとC1TileListBoxコントロールで解消できそうなので、さっそくやってみましょう。

縦スクロールするタイル表示

(1)ツールボックスの設定

 ComponentOne Studio for WinRT XAMLをインストールすると、「C1 XAML 8.1 Controls」タブとC1系のコンポーネントがツールボックスに追加されます。

図2 C1 XAML 8.1 Controls
図2 C1 XAML 8.1 Controls

(2)使用宣言

 C1TileListBoxを配置したいxamlファイルを開き、その先頭に「C1.Xaml」の使用宣言をします。

図3 クラスライブラリの指定
図3 クラスライブラリの指定

C1TileListBox応用編

(4)コントロールの配置

 MainPage.xamlの最後の方にC1TileListBoxコントロールを追加します。

リスト1 MainPage.xaml
<Grid Grid.Row="1">
    <c1:C1TileListBox x:Name="tileListBox" 
                        ItemsSource="{Binding Items}" 
                        Background="Transparent"
                        Foreground="White"
                        SelectedBackground="#FF0AC2FF"
                        ItemWidth="250"
                        ItemHeight="250">
        <c1:C1TileListBox.PreviewItemTemplate>
            <DataTemplate>
                <Grid Background="Gray"/>
            </DataTemplate>
        </c1:C1TileListBox.PreviewItemTemplate>
        <c1:C1TileListBox.ItemTemplate>
            <DataTemplate>
                <Grid Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}">
                    <Image Source="{Binding Thumbnail}" 
                            Stretch="UniformToFill"/>
                    <StackPanel Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}"
                                VerticalAlignment="Bottom">
                        <TextBlock Text="{Binding Title}" 
                                    Height="30"
                                    TextWrapping="Wrap"
                                    Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}"
                                    Margin="4 0 0 4"/>
                    </StackPanel>
                </Grid>
            </DataTemplate>
        </c1:C1TileListBox.ItemTemplate>
    </c1:C1TileListBox>
</Grid>

 たったこれだけの定義で、縦方向スクロールのタイル表示が完成しました。

図4 C1TileListBoxの実行例
図4 C1TileListBoxの実行例

スクロール方向を動的に変更

 C1TileListBoxコントロールでスクロール方向を変更したいときは、Orientationプロパティに「Vertical」または「Horizontal」を指定します。

 つまりこのプロパティに対してBindingをしてあげて、それをコードで変化させれば動的にスクロール方向を変えられます。

リスト2 スクロール方向を変える例(抜粋)
<c1:C1TileListBox x:Name="tileListBox" 
            ItemsSource="{Binding Items}" 
            Background="Transparent"
            Foreground="White"
            SelectedBackground="#FF0AC2FF"
            ItemWidth="250"
            ItemHeight="250"
            Orientation="{Binding ListOrientation}">  ……(追加)

 向きの変更は、アプリバーに設置した[向きの変更]ボタンをクリックして行います。

ズーム機能を有効に

 C1TileListBoxコントロールの良いところは、タッチ対応のPCであれば2本指でピンチまたはストレッチすることで、まるでイメージを拡大縮小するように表示したタイルを拡大縮小できることです。

 このズーム機能を有効にするには、ZoomModeプロパティをEnabledにします。

リスト3 スクロール方向を変える例(抜粋)
<c1:C1TileListBox x:Name="tileListBox" 
            ItemsSource="{Binding Items}" 
            Background="Transparent"
            Foreground="White"
            SelectedBackground="#FF0AC2FF"
            ItemWidth="250"
            ItemHeight="250"
            Orientation="{Binding ListOrientation}"
            ZoomMode="Enabled">    ……(追加)

 なお、ズーム機能の実行例については、下記を参照してください。

ライセンスについて

 ComponentOne Studio for WinRT XAMLは、ライセンス認証を行わないとトライアル版として動作し、実行時にトライアル版である旨を通知するダイアログが表示されます。

図5 トライアル版表示
図5 トライアル版表示

 ライセンスの組み込み方法は、ComponentOne Studioの中でもfor WinRT XAMLは他と異なりかなりスマートな方法で実現しています。

 他ではlicenses.licxファイルをプロジェクトに追加する必要がありましたが、for WinRT XAMLはライセンス認証した環境でビルドするだけでよく、その状態であればダイアログがでません。

 ただし、ライセンス認証前の環境で実行していたりビルドしたりすると「 c1:C1NagScreen.Nag="True"」がコントロールのタグの属性として自動的に埋め込まれていますので削除しないと、ライセンス認証後の環境でもダイアログがでるので注意してください。

まとめ

 ComponentOne StudioのListBoxコントロールに注目しただけでも標準コントロールと一味違うUIが簡単に実現できました。今回初めて使ってみましたが、使い勝手も標準コントロールをベースにしているため、導入コストも最小限という印象を受けました。

 無料のトライアル版で確認すればダイアログは出ますが、機能制限はありません。ぜひ、お手元のWindowsストアアプリのプロジェクトに組み込んで、今までとは一味違うアプリを仕上げられることを確認してみてください。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7660 2014/11/07 15:22

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング