WPFシリーズ - コントロールが追加された依存関係プロパティ
依存関係プロパティの概念は、作成および使用方法、使用しています。この記事では、WPFのプロパティの依存性を示すために、単純なアプリケーションTimePickerカスタムコントロールを使用していました。
まず、図のTimePickerの効果。
概念と応用:従来のサポート.NETはようにWPFでデータバインディング、アニメーション、スタイルや属性ように、依存関係プロパティは、従来のプロパティ.NETパッケージです。
新:任意のコードのコードファイルは、その後、入力propdpタブキーをダブルクリックします。次のコードブロックを生成します。
MYPROPERTY:属性名の依存; ownerclass:すべてのクラスに結合し、現在の依存関係プロパティ、新しいPropertyMetadataの初期化は、0がデフォルト値を表すオブジェクトの依存特性です。
公共int型MYPROPERTYは { {リターン(int型)GetValueメソッド(MyPropertyProperty)を取得します。} {値の代入(MyPropertyProperty、値)を設定します。} } // MYPROPERTYのバッキングストアとしてのDependencyPropertyを使用します。これは、アニメーション、スタイリングなど、結合...可能 のpublic static読み取り専用のDependencyProperty MyPropertyProperty = DependencyProperty.Register( "MYPROPERTY"、typeof演算(int型)、typeof演算(ownerclass)、新しいPropertyMetadata(0));
使用します。ここでは、後にカスタム属性を導入するために時間を使って、バインディングがバインドを使用します。
結合TimePickerでカスタムコントロールを構築するために、依存関係プロパティを使用する方法
DependencyPropertyDemo WPFプロジェクトという名前の新しいプロジェクトを作成し 、カスタムコントロールのTimePickerを作成します。次のようにXAMLのレイアウトは次のとおりです。
<グリッド> <Grid.ColumnDefinitions> <ColumnDefinition幅= "9 *" /> <ColumnDefinition幅= "24" /> <ColumnDefinition幅= "10 *" /> </Grid.ColumnDefinitions> <コンボボックス名= "cbbHour" Grid.Column = "0" /> <ラベルの内容= ":" Grid.Column = "1" /> <コンボボックス名= "cbbMinute" Grid.Column = "2" /> </グリッド>
以下のように、時間依存プロパティの新しい名前をBehindCode:
公共の文字列の時間 { 取得{戻り値(文字列)のGetValue(TimeProperty)。} {値の代入(TimeProperty、値)を設定します。} } パブリック静的読み取り専用たDependencyProperty TimeProperty = DependencyProperty.Register( "時間"、 typeof演算(文字列)、 typeof演算(TimePicker)、 新しいPropertyMetadata(はdefaultValue: "午後12時00"、 propertyChangedCallback:ヌル、 いるCoerceValueCallback:いるCoerceValueCallback))。 プライベート静的オブジェクトいるCoerceValueCallback(のDependencyObject dを、baseValueオブジェクト) { (baseValue!= null)の場合 { TimePickerとしてVAR制御= D。 。VAR回= baseValue.ToString()スプリット( ':'); control.cbbHour.SelectedItem =回数[0]。 control.cbbMinute.SelectedItem =時間[1]。 baseValue.ToStringを返します(); } baseValueを返します。 }
defaultValue:ここでPropertyMetadata 3パラメータの詳細です導入されていないデフォルトでは、; propertyChangedCallback:プロパティ変更通知イベントの後、そこに予告の必要がないため、null値を渡し;いるCoerceValueCallback:これは、バインディング、新しいプロパティ値の値であり、コントロールに割り当てられた値を取得するために、ここで使用された場合、イベント通知、。ここでの時間は、財産の半分の完了に依存します。
TimePickerのプロパティは、時間の結合特性に依存します
バインディング以下に示すように、非常に簡単です。時間ではなく、属性に頼るの.NETの共通の属性がある場合は、そのような使用は、結合方法ではありません。
<ローカル:TimePickerたHorizontalAlignment = "左"マージン= "137,38,0,0" VerticalAlignmentを= "トップ"幅= "161" 時間= "{のStartTime結合、モード=双方向}" />
プロパティTimePickerコードはバックグラウンドで、バインディングを使用し、その後、次の条件が発生することが一般的な仮定を追加します。
ワード要約した後、
依存関係プロパティの使用は一定の限界があるが、彼はそれがあり、登録クラスのオブジェクトである、ownerclass上記のDependencyObjectの基本クラスを継承する必要がありますが、心配しないで、WPF、ほとんどの要素は、間接的な基本クラスを統合しています。
この記事で実装TimePickerコントロールは、いくつかのケースでは時間WPF選択制御の問題に解決することができます。
あなたはこのブログは、いくつかの利益を作る読んでいると思われる場合、以下の[推奨]と[注意]ボタンをクリックしてください、あなたのサポートをありがとう、私は北朝鮮が荒廃していました。