SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

Silverlightで行うデータ処理アプリケーション開発の第一歩

Silverlightが持つ強力なデータバインド機能

Silverlightで行うデータ処理アプリケーション開発の第一歩 第4回

バインドのターゲット

 ターゲットとなる対象は以下から派生されるオブジェクトです。

  • System.Windows.FrameworkElement
  • System.Windows.DependencyObject(Silverlight 4より)

 下記の継承の階層構造を見てみると、System.Windows.FrameworkElementの下には、さまざまなコントロールがあることが分かります。PanelやUserControl自身もターゲットとなります。

階層構造
System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
       System.Windows.Media.GeneralTransform
       System.Windows.Media.Projection
:
以下省略
       System.Windows.UIElement
          System.Windows.FrameworkElement
            System.Windows.Controls.AccessText
            System.Windows.Controls.AdornedElementPlaceholder
            System.Windows.Controls.ContentPresenter
            System.Windows.Controls.Control
            System.Windows.Controls.Decorator
            System.Windows.Controls.Image
:
以下省略

 また、Silverlight 4では、より上位にあるSystem.Windows.DependencyObjectの派生オブジェクトにバインドできるようになりました。これは例えばコントロール以外にもTransformやProjectionなどに直接バインドできることを意味します。

 実際にこの例を見てみましょう。

 以下のコードのように、コントロールと、Projectionの双方にバインドできるのがSilverlight 4の特徴です。この例は、TextBlockのTextプロパティをTextBoxのTextプロパティに、PlaneProjectionのRotationZをSliderのValueにバインドしています。

Silverlight 4におけるバインディング
<TextBlock Name="textBlock1" Text="{Binding ElementName=textBox1, Path=Text}">
    <TextBlock.Projection>
        <PlaneProjection RotationZ="{Binding ElementName=slider1, Path=Value}" />
    </TextBlock.Projection>
</TextBlock>
<TextBox Name="textBox1" Background="#FFE5B3B3" />
<Slider Name="slider1" Maximum="360" Height="44" Width="497" />

 この実行結果は次のようになります。TextBoxに入力した文字がTextBlockに表示され、Sliderを動かすとTextBlockの文字が回転します。

実行結果
実行結果

 バインドのターゲットとなるプロパティは依存関係プロパティと呼ばれ、通常のCLRプロパティとは異なるものです。依存関係プロパティは、自身の値を「他の入力」から計算・取得する方法が提供されているプロパティです。この「他の入力」の代表的な1つとしてデータバインドがあるわけですが、幸いなことに主要なプロパティのほとんどが依存関係プロパティになっているため、データバインドを行ううえではあまり意識する必要はありません。しかし、Silverlight・WPFといったXAMLベースのテクノロジの根本的な機能に相当するので、最終的には理解した方がより詳細な実装ができることは言うまでもないでしょう。

次のページ
バインディングモード

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

Silverlightで行うデータ処理アプリケーション開発の第一歩連載記事一覧

もっと読む

この記事の著者

マイクロソフト株式会社 小高 太郎(コダカ タロウ)

マイクロソフト株式会社 デベロッパーエバンジェリスト。某国内SI企業にてERPパッケージ開発に携わり、プログラマー、SE、PMと様々なロールを担当すると共に、Microsoft Universityの講師を兼務する。マイクロソフト株式会社では、デベロッパーエバンジェリストとして開発者向けに様々な技術...

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5144 2010/05/13 14:00

イベント

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

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

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

メールバックナンバー