WPF 依存プロパティは すばらしい?

15
わわわわわわ わわわわわ #15 WPF わわわわわわわわ わわわわわわわわわ わわわわわ () Microsoft MVP for Visual-Developer C# 2005/01-2008/12

description

WPF 依存プロパティは すばらしい?. えムナウ(児玉宏之) Microsoft MVP for Visual-Developer C# 2005/01-2008/12. アジェンダ. はじめに 依存プロパティの概要 添付プロパティの概要 まとめ. はじめに. 依存プロパティは他の入力の値に基づいてプロパティの値を計算する方法を提供する為の 既存のプロパティの拡張です。 添付プロパティは任意のオブジェクトに対して設定可能な一種のグローバル プロパティを提供する為の 既存のプロパティの拡張です。. 混同厳禁. 依存プロパティの概要. - PowerPoint PPT Presentation

Transcript of WPF 依存プロパティは すばらしい?

Page 1: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

WPF依存プロパティは

すばらしい?えムナウ(児玉宏之)

Microsoft MVP for Visual-Developer C# 2005/01-2008/12

Page 2: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

アジェンダ

• はじめに• 依存プロパティの概要• 添付プロパティの概要• まとめ

Page 3: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

はじめに

• 依存プロパティは他の入力の値に基づいてプロパティの値を計算する方法を提供する為の 既存のプロパティの拡張です。

• 添付プロパティは任意のオブジェクトに対して設定可能な一種のグローバル プロパティを提供する為の 既存のプロパティの拡張です。

Page 4: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

依存プロパティの概要

• WPFで使うほとんどのプロパティは依存プロパティ

<RadioButton Margin="36,95,122,0" Name="radioButton1" VerticalAlignment="Top">RadioButton</RadioButton>

<Button Height="23" HorizontalAlignment="Left" Margin="52,40,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click">Button1</Button>

Page 5: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

依存プロパティの概要

• 他の入力の値って何?– テーマ– ユーザー設定– データ バインディング– アニメーション / ストーリーボード– リソースやスタイルなどの多目的のテンプ

レート– 要素ツリー内の他の要素との親子のリレー

ションシップから判断される値

Page 6: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

依存プロパティの概要

• なにができるの?– 自己完結型の検証– 既定値– 他のプロパティに対する変更を監視するコー

ルバック– プロパティ値を強制するシステム

Page 7: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

依存プロパティの概要

• どんな風な定義?public static readonly DependencyProperty CurrentProperty

= DependencyProperty.Register(

   "Current", typeof(int), typeof(UserControl1));

– Current プロパティ– Int 型– UserControl1 というクラスのプロパティ

Page 8: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

依存プロパティの概要

public static readonly DependencyProperty   CurrentProperty = DependencyProperty.Register("Current", typeof(int), typeof(UserControl1),

new PropertyMetadata(0,

new PropertyChangedCallback(OnCurrentChanged),

new CoerceValueCallback(Current_coercevalue)),

new ValidateValueCallback(Current_validatevalue));

– 初期値 0– OnCurrentChanged 変更監視– CoerceValue 強制– ValidateValue 検証

Page 9: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

依存プロパティデモ

Page 10: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

添付プロパティの概要

• 自分の子供にプロパティを付加するもの– Grid.Row Grid.Column– DockPanel.Dock

• 自分の子供とか関係なくプロパティを付加するもの– Validation.ErrorTemplate– Validation.HasError Validation.Errors

Page 11: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

添付プロパティの概要

• なにができるの?– 親要素で定義されるプロパティについて、子

要素がそれぞれ別の値を指定– オブジェクトのそれぞれが、所有する型に対

して共通の情報を報告

Page 12: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

添付プロパティの概要

• どんな風な定義?public static readonly DependencyProperty Bool1Property

= DependencyProperty.RegisterAttached("Bool1", typeof(bool), typeof(Attached1));

– Bool1 プロパティ– bool 型– Attached1 というクラスのプロパティ

Page 13: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

添付プロパティの概要

public static bool GetBool1(DependencyObject element)

public static void SetBool1(DependencyObject element, bool value)

– DependencyObject に添付する– Bool 型の変数

Page 14: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

添付プロパティデモ

Page 15: WPF 依存プロパティは すばらしい?

わんくま同盟 東京勉強会 #15

まとめ

• 依存プロパティは WPF における一般的なプロパティで WPF とやり取りをする機構をもっています。

• 添付プロパティは WPF において子供の要素や関係ない要素にグローバルなプロパティを提供するものです。