WPFシリーズ - コントロールが追加された依存関係プロパティシリーズWPFを(オン) - コントロールを追加し、依存関係プロパティです

WPFシリーズ - コントロールが追加された依存関係プロパティ

依存関係プロパティの概念は、作成および使用方法、使用しています。この記事では、WPFのプロパティの依存性を示すために、単純なアプリケーションTimePickerカスタムコントロールを使用していました。

まず、図のTimePickerの効果。

GIF

 

 

 

 

 

 

 

 

 

概念と応用:従来のサポート.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たHorizo​​ntalAlignment = "左"マージン= "137,38,0,0" VerticalAlignmentを= "トップ"幅= "161" 
                          時間= "{のStartTime結合、モード=双方向}" />

プロパティTimePickerコードはバックグラウンドで、バインディングを使用し、その後、次の条件が発生することが一般的な仮定を追加します。

画像

 

ワード要約した後、

依存関係プロパティの使用は一定の限界があるが、彼はそれがあり、登録クラスのオブジェクトである、ownerclass上記のDependencyObjectの基本クラスを継承する必要がありますが、心配しないで、WPF、ほとんどの要素は、間接的な基本クラスを統合しています。

この記事で実装TimePickerコントロールは、いくつかのケースでは時間WPF選択制御の問題に解決することができます。

デモのダウンロード

あなたはこのブログは、いくつかの利益を作る読んでいると思われる場合、以下の[推奨]と[注意]ボタンをクリックしてください、あなたのサポートをありがとう、私は北朝鮮が荒廃していました。ウィンク

おすすめ

転載: www.cnblogs.com/lsgsanxiao/p/11330506.html
おすすめ