WPFカスタムコントロールの生産

  時にはあなたがカスタマイズしたコントロールを必要とするので、組み合わせて、コントロールの複数の複雑な機能を統合する必要があるので、あなたは、カスタムユーザーコントロールを考慮することができます。カスタムコントロールとして説明した機能を次のような単純な数値の減少を共有。

次のような効果があります

 

1.( - > [新しい項目を - > [ユーザーコントロールの追加)カスタムユーザーコントロールを作成します。

 

2、XAMLで記述されました

<ユーザーコントロールのx:クラス= " XXX自定义控件.MyNumericUpDown。" 
             のxmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation " 
             のxmlns:X = " http://schemas.microsoft.com /のWinFX / 2006 / XAML " 
             のxmlns:MC = " http://schemas.openxmlformats.org/markup-compatibility/2006 "  
             のxmlns:D = " http://schemas.microsoft.com/expression/blend/2008  
             のxmlns :ローカル = " CLR名前空間:XXX自定义控件。" 
             MC:無視= "D "  
             D:DesignHeight = " 30 " D:DesignWidth = " 120 " > 
    <グリッド> 
        <Grid.ColumnDefinitions> 
            <ColumnDefinition幅= " オート" /> 
            <ColumnDefinition幅= " 40 * " /> 
            <ColumnDefinition幅= " 40 * " /> 
        </Grid.ColumnDefinitions> 

        <テキストボックス名= " TextBox_Num " Grid.Column = "0 "テキスト= "1 "のFontSize = " 20 " TextAlignment = " センター"のminWidth = " 40 " VerticalContentAlignment = " センター" /> 
        <ボタン名= " Button_Add " Grid.Column = " 1 "コンテンツ= " "をクリック= " Button_Add_Click "背景= " アクア" /> 
        <ボタン名= "Button_Sub " Grid.Column = " 2"コンテンツ= " "をクリック= " Button_Sub_Click "背景= " アクア" /> 
        
    </グリッド> 
</ユーザーコントロール>

UIはシンプルですが、私は説明しません...

 

2、背後にあるコードを書きます

 ///  <要約> 
    /// MyNumericUpDown.xaml的交互逻辑
     ///  </要約> 
    パブリック 部分 クラスMyNumericUpDown:ユーザーコントロール
    { 

        ///  <要約> 
        /// 当前值
         ///  </要約> 
        公共 INT 
        { 
            取得
            { 
                int型値= 0 この .Dispatcher.Invoke(新しいアクション(()=>  = Convert.ToInt32(この.TextBox_Num.Text.Trim()) 
                )); 
                リターン値; 
            } 
            集合
            { 
                この .Dispatcher.Invoke(新しいアクション(()=> 
                { 
                    この .TextBox_Num.Text = value.ToString(); 
                }))。                
            } 
        } 

        パブリックMyNumericUpDown()
        { 
            のInitializeComponent(); 
        } 
        
        プライベート ボイド Button_Add_Click(オブジェクト送信者、RoutedEventArgs E)
        { 
            int型 NUM = INT .Parse(この.TextBox_Num.Text.Trim())。
            もし(NUM> 0 
            { 
                この .TextBox_Num.Text =(NUM + 1 ).ToString(); 
            } 
        } 

        プライベート ボイド Button_Sub_Click(オブジェクト送信者、RoutedEventArgs E)
        { 
            int型 NUM = INT .Parse(この.TextBox_Num.Text.Trim())。
            もし(NUM> 0 
            { 
                もし - ((NUM 1)== 0 のリターン;
                この .TextBox_Num.Text =(NUM - 1).ToString(); 
            } 
        } 
    }

Logicは、比較的単純な2回のボタンのクリックイベント、毎回プラス1またはマイナス1です。これは、開示されたプロパティ(プロパティの値のみが実施の形態は、民を制御開示されている)、読者のパッケージングのために要求される特性、およびTextBoxコントロール操作コールバック呼び出しUIスレッドは、好ましくは、動作するために必要とされるとき、リーダが設けられていることに留意すべきです、それ以外の場合はエラー(もちろん、あなたも外に呼び出すことができます)する場合、他のスレッド操作。

 

3、制御コール

ユーザーコントロールは、ユーザーコントロールはContentControlにから継承し、ユーザーコントロールを継承し、あなたは、同じ一般的なコントロールを呼び出すことができますが、一貫性のない名前空間には、名前空間を宣言します。

xmlns:Z = " CLRネームスペースで:.カスタムXXX " // Windowsの名前空間宣言タグ 
<Z:MyNumericUpDownのX:名= " MyNumericUpDown_PageNum "幅= " 120 "高さ= " 30 " > </ Z:MyNumericUpDown >

 

実際には、我々は我々が(例えば、結合など)依存関係プロパティの特性を持つことができるように、書かれた依存関係プロパティをバインディング外部データを必要とする属性が、より複雑にすることができ、最高の、次の時間を指定します。

 

おすすめ

転載: www.cnblogs.com/xiaomengshan/p/11564474.html