• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+
イイね!
2007年11月09日

【C#】DependencyProperty【.NET3.0】

ブレイクスルー
いい響きだ。
日常でこれを実感できることはなかなか無い。
今日は久々にブレイクスルーがあったのでいつものようにメモするー。

自作プロパティにトリガーを設定する方法


コントローラーの種類が倍くらい増えた.NET3.0だが、やはり「欲しい」コントローラーは自作する必要がある。
当然、プロパティもニーズに合わせてぼこぼこ並べる。
.NET2.0ならなんの問題も無い。

だが、

C#ではアクセサがイベントドリブンのカギになっている。
値が変わったからイベント発生雷
この処理の最初の門はアクセサなのだ。
だから.NET2.0ではアクセサ内でイベントメッセージを発行させていた。
値が変わったから今すぐ画面の文字を書き換えて再描画しなさい雷
という具合だ。

これが.NET3.0のコーディングスタイルと矛盾するのだ。バッド(下向き矢印)

.NET2.0ならコーディングで再描画させるが、.NET3.0ではXAMLが定義する
つまりあらかじめ「どのプロパティが変わったらこの描画パターンを実行するか」を決めておくのだ(そのXAMLのエディタがBlend)。
だから、なんとかしてプロパティが変わったことを.NET3.0に知らせなければいけない。
それがプロパティトリガー雷だ。

このプロパティトリガー
標準のプロパティならドロップダウンで選べるのだが、自作モノは出てこない。
デリゲートでメッセージ発行させても出てこない。
本を紐解いても載ってない(参考書というものは大抵現場のニーズに応えてくれない)。

仕方ないので無理やりXAMLを書き換えて自作プロパティをトリガー化してみた。
エラーが出た。
そりゃそうかとガッカリしたが、よく読むと「DependencyPropertyではありません」と出ているではないか。
そうか。
DependencyPropertyにすればいいんだな!?(-_☆)キラーン

グーグルで調べまくってここにたどり着いた。
ここのサンプル通りに書いてうまく行った。
DependencyPropertyで悩んでいる諸君は参考にされたし。

public static readonly DependencyProperty IconColorProperty =
DependencyProperty.Register(
“IconColor”,
typeof(Brush),
typeof(PlayButton),
new FrameworkPropertyMetadata(Brushes.Black,
new PropertyChangedCallback(OnIconColorChanged
)));


ご覧のとおり、DependencyPropertyという型を宣言して、実際のプロパティの型は第2引数で指定している(ちなみに第1引数はホンモノのアクセサ)。
なんちゅー無茶苦茶なテクニックだ。型とか超無視じゃん(いや無視してないんだけど)。なんでもありじゃないか。
ゲイツこんなのよく作ったなぁ。
ブログ一覧 | プログラム | 日記
Posted at 2007/11/09 20:44:49

イイね!0件



今、あなたにおすすめ

ブログ人気記事

0815
どどまいやさん

♦️Y'sClubサンモニ♦️特別 ...
ババロンさん

トヨタ ランドクルーザー70(GD ...
AXIS PARTSさん

ある日のブランチ
パパンダさん

【美ヶ原と】雲と仲良し?な8月【八 ...
hinosさん

【 暑過ぎて・・・】
ステッチ♪さん

この記事へのコメント

コメントはありません。

プロフィール

みんカラ新規会員登録

ユーザー内検索

<< 2025/8 >>

     12
3456789
10111213141516
17181920212223
24252627282930
31      

リンク・クリップ

有楽町丸井 
カテゴリ:脱キモオタ
2007/09/15 15:55:54
 
Elastic 
カテゴリ:脱キモオタ
2007/02/13 00:55:22
 
スタイルコネクション 
カテゴリ:脱キモオタ
2007/02/13 00:33:58
 

愛車一覧

日産 180SX 日産 180SX
おっさんなのに180sx
ヘルプ利用規約サイトマップ

あなたの愛車、今いくら?

複数社の査定額を比較して愛車の最高額を調べよう!

あなたの愛車、今いくら?
メーカー
モデル
年式
走行距離(km)
© LY Corporation