時にはあなたがカスタマイズしたコントロールを必要とするので、組み合わせて、コントロールの複数の複雑な機能を統合する必要があるので、あなたは、カスタムユーザーコントロールを考慮することができます。カスタムコントロールとして説明した機能を次のような単純な数値の減少を共有。
次のような効果があります
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 >
実際には、我々は我々が(例えば、結合など)依存関係プロパティの特性を持つことができるように、書かれた依存関係プロパティをバインディング外部データを必要とする属性が、より複雑にすることができ、最高の、次の時間を指定します。