SHOEISHA iD

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

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

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

「InputMan for WPF」で操作性の高いUIを開発 ~Windowsフォームとは一味違うデザインを実装~

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

 WindowsアプリケーションのUIは、これまではWindowsフォームを使っての構築が主流でした。しかし、より良いUIの構築には、WPFでの開発は今後必要不可欠となるでしょう。今回は、WPF向けのコンポーネント群「InputMan for WPF」を使って、お客様情報登録画面の実装方法を解説します。

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

WPFで優れたUIを作成するInputMan for WPF

 これまで、WindowsアプリケーションのUIを構築する方法は、Windowsフォームを使用した開発が中心でしたが、より良いUI設計を考えると、今後はWPFを採用した開発が主流となっていくでしょう。しかし現実には、WindowsフォームからWPFへの移行は、思うように進んではいないのが実情です。XAMLが難しいなど、色々な要因があると思います。それ以外にも、Windowsフォーム向けに販売されているコンポーネント製品の出来が良いため、従来のWindowsフォームに拡張性を持たせた優れたUIを提供でき、WPFに移行する必要がないと判断されている場合もあるのではないでしょうか。

 では、そんなコンポーネント群がWPF向けに提供されたらどうでしょう。「InputMan for WPF」はWindowsフォームでの日本語入力環境を飛躍的に向上させ続けてきた「InputMan」のWPF版です。InputMan for WPFを使用すると、WPFを採用した業務アプリケーションのUI開発をスムーズに行うことができます。

InputMan for WPFの構成

 InputMan for WPFには次のようなコンポーネントが収録されています。

  • テキスト
  • マスク
  • 日付
  • 数値
  • カレンダー
  • 電卓
  • 検証インジケータ
  • IME管理
  • 書式コンバータ

 主な機能としては次のような機能が実装されています。

  • 入力書式と出力書式の個別設定
  • 和暦入力と表示
  • 半角・全角、ひらがな・カタカナなどの文字種自動変換
  • 入力範囲チェック
  • 検証エラー通知
  • 未入力時の代替テキスト(いわゆるウォーターマーク)表示
  • フィールド単位のスタイル設定
  • テーマテンプレート対応
  • 複数行テキスト入力時の行間罫線および最大行数制限
  • ふりがな自動取得

 多岐に渡る機能が用意されているため、自分が使いたい機能が実装されているかが判断しづらいかも知れません。そこで、お客様情報の登録用業務アプリをサンプルで作成して、標準のコンポーネントとどれくらい使い勝手が違うのかを検証してみたいと思います。

サンプル画面のデザイン

 今回の比較では、入力フィールド以外は共通のデザインを採用します。以下のXAMLで定義された雛形をもとに、標準コンポーネントを使用してできる画面と、InputMan for WPFを使用してできる画面とを比較していきたいと思います。

図1 サンプルデザイン
図1 サンプルデザイン
リスト1 サンプルデザインのXAML定義
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="300" Width="600">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Image x:Name="Icon_Image" Grid.RowSpan="7" Margin="5" VerticalAlignment="Top" />
        <TextBlock Grid.Row="0" Grid.Column="1" Padding="5" Text="氏名" />
        <TextBlock Grid.Row="1" Grid.Column="1" Padding="5" Text="フリガナ" />
        <TextBlock Grid.Row="2" Grid.Column="1" Padding="5" Text="郵便番号" />
        <TextBlock Grid.Row="3" Grid.Column="1" Padding="5" Text="住所" />
        <TextBlock Grid.Row="4" Grid.Column="1" Padding="5" Text="生年月日" />
        <TextBlock Grid.Row="5" Grid.Column="1" Padding="5" Text="備考" />
        …(*)…
    </Grid>
</Window>

 今回のサンプルには、業務アプリの基本レイアウトとしてタイトルと入力フィールドが並べやすいGridを採用しています(Grid以外にStackPanelやCanvasなども指定できます)。リスト1には、まだ入力フィールドを配置していませんが、次ページから「Grid.Column="2"」として入力フィールド用のコントロールを配置していきます。

次のページ
標準コンポーネントでお客様情報登録画面を作成

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(InputMan)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5929 2011/10/13 16:46

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング