中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

FirePropertyChanged("")は利かない

バインディングで以下のようなバインディングをするとします。

<GRID DataContext="{Binding Path=R田中一郎}">
<TEXTBOX Text="{Binding Converter={StaticResource 名前抜き出しコンバータ}}" />

この場合TextにはR田中一郎オブジェクト自体がバインドされて、コンバータを通して表示されることになります。

たとえば

"R田中一郎 17歳"

この場合R田中一郎を表現しているわんくまメンバーくらすに何らかかの変化が入った場合には、このテキストボックスの内容は更新されません。(18歳になったとか)

これはFirePropetyChanged("")が効果がないためです。

以下のような回避ロジックが必要になります。これはバインドするすべてのオブジェクトに仕込むべきです。

システム全体で共通のインターフェイスとしてもいいくらいです。

public わんくまメンバー me{get{return this;}}
public 年齢{get{return _a;}set{_a=value;FirePropertyChanged("年齢");}}

private void FirePropertyChanged(string PropertyName){if ( this.ProperyChanged != null ) {
this.PropertyChanged(new PropertyChangedArgs(PropertyName));
this.PropertyChanged(new PropertyChangedEventArgs("me"));
}}
<GRID DataContext="{Binding Path=R田中一郎}">
<TEXTBOX Text="{Binding Path=me, Converter={StaticResource 名前抜き出しコンバータ}}">

 

フリーハンドにつきミスってたらごめんなさい

投稿日時 : 2007年9月1日 10:41

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント