INotifyPropertyChanged

Published 13 June 08 05:33 PM | hiroyuk 

Silverlightでは自分のプロパティが変化したとき、他のオブジェクトに伝えるINotifyPropertyChangedがUIElementに実装されていません。ですから、XAMLだけでスライダを使って矩形のサイズを変更させるようなことができません。

JoyOfCodeにINotifyPropertyChangedを使ったBindingHelperの実装例がありました。これを使うと、先のスライダと矩形がXAMLでかけます。ここではSilverlightにはElementNameがないので、その対応策だとも書いてあります。

スライダ→BindingHelper→Rectangleという2つのバインディングを使っています。スライダからHelperには逆のバインディングなので、TwoWayモードを使います。

<StackPanel Margin="5" Background="White">

  <StackPanel.Resources>

    <local:BindingHelper x:Key="bindingHelper" />

  </StackPanel.Resources>

  <Rectangle Height="50" Fill="Blue"

   Width="{Binding Value,

            Source={StaticResource bindingHelper}}"/>

  <Slider Maximum="100" Width="200"

   Value="{Binding Value,

            Source={StaticResource bindingHelper},

            Mode=TwoWay}"/>

</StackPanel>

Filed under:

Comments

No Comments
Anonymous comments are disabled

About hiroyuk

マイクロソフト㈱エバンジェリスト。北海道大学理学部物理学科卒。リアルタイム3Dグラフィックスを専門とし、グラフィックスやシェーダに関する技術文章を執筆・講演。 DirectX SDK日本語ドキュメントの開発に携わるとともに、Windows Presentation Foundation プログラミング(オーム社)、Game Programming Gemsシリーズ、リアルタイム レンダリング第2版(ボーンデジタル)、Texturing & Modeling, A Procedural Approach などを翻訳・監修、XAMLプログラミング(ソフトバンク クリエイティブ)を執筆。趣味は薪割り。

Search

This Blog

DirectX 情報

Silverlight 情報

Windows 情報

WPF 情報

並列コンピューティング情報

著書

Syndication

Page view tracker