SHOEISHA iD

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

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

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

日本仕様の入力フォームを持ったSilverlightアプリケーションを作成しよう~InputMan for SliverlightでWebアプリを強化する

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

ダウンロード サンプルソース (1.0 MB)

サンプルアプリの画面デザイン

 今回のサンプルは、イベントへの参加登録画面をイメージして作成しました。

図5 サンプル画面デザイン
図5 サンプル画面デザイン

 この画面デザインはVisual Studio上でもデザイナー(「デザイン」タブ)、またはエディタ(「XAML」タブ)を使ってデザインできますが、Expression Blendがインストールしてあれば、ソリューションエクスプローラーで「MainPage.xaml」ファイルを右クリックして[Expression Blendを開く]メニューからExpression Blendを起動し、編集することもできます。Expression Blendを使えば、Story Boardなどが設定しやすく便利です。

図6 Expression Blend画面
図6 Expression Blend画面

 このサンプル画面には、次のInputMan for Silverlightのコントロールおよびコンポーネントを使用しています。

  • GcTextBox
  • GcMask
  • GcDateTime
  • GcValidationIndicator
  • GcImeManager

 それでは、まず各コントロールを配置する前のXAMLの内容をみてみましょう。

リスト1 ベースとなるXAML定義
<UserControl x:Class="CZ1012InputMan.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400" 
    xmlns:im="http://schemas.grapecity.com/windows/2010/inputman" 
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">
    <Canvas>
        <Canvas.Background>
            <ImageBrush ImageSource="/CZ1012InputMan;component/Images/ItaIDE003.png" 
                       Stretch="Uniform"  Opacity="0.3"
                       AlignmentX="Right" AlignmentY="Top" />
        </Canvas.Background>
        <Grid x:Name="LayoutRoot" Margin="10" Loaded="MainPanel_Loaded">
            <Grid.RowDefinitions>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="80*"/>
                <RowDefinition Height="40"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="75" />
                <ColumnDefinition Width="290"/>
                <ColumnDefinition Width="25" />
            </Grid.ColumnDefinitions>
        </Grid>
    </Canvas>
</UserControl>

 今回のサンプルでは表示画面に背景画像を表示したかったので、Canvasの中に背景用のCanvasとデータ表示用のGridを配置しています。

 Grid部分は7行3列になるようにRowとColumnを設定しています。6行目は『コメント欄』で、入力に応じて高さを可変にしたいので「<RowDefinition Height="80*"/>」のように、アスタリスク付きで指定しています。

GridコントロールのLoadedイベント

 Gridコントロールのイベントとして「Loaded="MainPanel_Loaded"」を定義しています。「MainPage.xaml.vb」には、対応する次のイベントプロシージャが記述されています。XAML側でイベントとイベントプロシージャの関連付けが行われているので「MainPage.xaml.vb」側にはHandle句がないことに注意してください。

リスト2 Loadedイベントのイベントプロシージャ例
Private Local As CZ1012Class

Private Sub MainPanel_Loaded(ByVal sender As System.Object,
                             ByVal e As System.Windows.RoutedEventArgs)
    Local = New CZ1012Class() With {.Name = "藍澤 光",
                                    .Kana = "アイザワ ヒカル",
                                    .BirthDay = CDate("1996/09/27")}
    Me.LayoutRoot.DataContext = Local
    Me.current = GrapeCity.Windows.InputMan.GcImeManager.Current
End Sub

 イベントプロシージャの中では、データ定義である「CZ1012Class」のオブジェクトを初期値を代入しながら生成して、そのオブジェクトをGridコントロール(Me.LayoutRoot)のDataContextに割り当てています。

 ここで使っている「CZ1012Class」は、次のようなコードになっています。

リスト3 データストアクラスの例
Public Class CZ1012Class
    Public Property Name As String
    Public Property Kana As String
    Public Property HandleName As String
    Public Property MailAddress() As String
    Public Property BirthDay As Date
    Public Property Comment As String
End Class

次のページ
『本名欄』の構成

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

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

もっと読む

この記事の著者

初音玲(ハツネアキラ)

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5665 2010/12/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング