スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

数値だけのTextBoxだってやれるはずだ(弐)

添付プロパティを用意する。
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;

namespace TawamureDays {

/// <summary>
/// Description of TextBoxBehavior.
/// </summary>
public static class TextBoxBehavior {

#region AllowOnlyNumericプロパティ

/// <summary>
/// 数値入力のみ許可するかどうかを取得します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <returns>true:数値入力のみ許可する</returns>
public static bool GetAllowOnlyNumeric(DependencyObject obj) {
return (bool)obj.GetValue(AllowOnlyNumericProperty);
}

/// <summary>
/// 数値入力のみ許可するかどうかを設定します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <param name="value">true:数値入力のみ許可する</param>
public static void SetAllowOnlyNumeric(DependencyObject obj, bool value) {
obj.SetValue(AllowOnlyNumericProperty, value);
}

/// <summary>数値入力のみ許可するかどうか</summary>
public static readonly DependencyProperty AllowOnlyNumericProperty =
DependencyProperty.RegisterAttached("AllowOnlyNumeric", typeof(bool),
typeof(TextBoxBehavior),
new UIPropertyMetadata(false,
OnAllowOnlyNumericPropertyChanged));

/// <summary>
/// AllowOnlyNumeric用Workerを取得します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <returns>AllowOnlyNumeric用Worker</returns>
public static AttachedPropertyWorker GetAllowOnlyNumericWorker(DependencyObject obj) {
return (AttachedPropertyWorker)obj.GetValue(AllowOnlyNumericWorkerProperty);
}

/// <summary>
/// AllowOnlyNumeric用Workerを設定します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <param name="value">AllowOnlyNumeric用Worker</param>
public static void SetAllowOnlyNumericWorker(DependencyObject obj, AttachedPropertyWorker value) {
obj.SetValue(AllowOnlyNumericWorkerProperty, value);
}

/// <summary>AllowOnlyNumeric用Worker</summary>
public static readonly DependencyProperty AllowOnlyNumericWorkerProperty =
DependencyProperty.RegisterAttached("AllowOnlyNumericWorker",
typeof(AttachedPropertyWorker),
typeof(TextBoxBehavior),
new UIPropertyMetadata());

/// <summary>
/// AllowOnlyNumericプロパティ値変更イベントハンドラ
/// </summary>
/// <param name="dpObj">イベント発生元</param>
/// <param name="e">イベントデータ</param>
private static void OnAllowOnlyNumericPropertyChanged(
DependencyObject dpObj, DependencyPropertyChangedEventArgs e) {

var textBox = dpObj as TextBox;

if (textBox == null) {
return;
}

if ((bool)e.NewValue) {
//
} else {
//
}

return;
}

/// <summary>
/// 整数部桁数を取得します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <returns>整数部桁数</returns>
public static int GetIntegerPartDigit(DependencyObject obj) {
return (int)obj.GetValue(IntegerPartDigitProperty);
}

/// <summary>
/// 整数部桁数を設定します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <param name="value">整数部桁数</param>
public static void SetIntegerPartDigit(DependencyObject obj, int value) {
obj.SetValue(IntegerPartDigitProperty, value);
}

/// <summary>整数部桁数</summary>
public static readonly DependencyProperty IntegerPartDigitProperty =
DependencyProperty.RegisterAttached("IntegerPartDigit", typeof(int),
typeof(TextBoxBehavior),
new UIPropertyMetadata(0));

/// <summary>
/// 小数部桁数を取得します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <returns>小数部桁数</returns>
public static int GetDecimalPartDigit(DependencyObject obj) {
return (int)obj.GetValue(DecimalPartDigitProperty);
}

/// <summary>
/// 小数部桁数を設定します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <param name="value">小数部桁数</param>
public static void SetDecimalPartDigit(DependencyObject obj, int value) {
obj.SetValue(DecimalPartDigitProperty, value);
}

/// <summary>小数部桁数</summary>
public static readonly DependencyProperty DecimalPartDigitProperty =
DependencyProperty.RegisterAttached("DecimalPartDigit", typeof(int),
typeof(TextBoxBehavior),
new UIPropertyMetadata(0));

/// <summary>
/// 最小値を取得します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <returns>最小値</returns>
public static decimal? GetMinValue(DependencyObject obj) {
return (decimal?)obj.GetValue(MinValueProperty);
}

/// <summary>
/// 最小値を設定します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <param name="value">最小値</param>
public static void SetMinValue(DependencyObject obj, decimal? value) {
obj.SetValue(MinValueProperty, value);
}

/// <summary>最小値</summary>
public static readonly DependencyProperty MinValueProperty =
DependencyProperty.RegisterAttached("MinValue", typeof(decimal?),
typeof(TextBoxBehavior),
new UIPropertyMetadata(null));

/// <summary>
/// 最大値を取得します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <returns>最大値</returns>
public static decimal? GetMaxValue(DependencyObject obj) {
return (decimal?)obj.GetValue(MaxValueProperty);
}

/// <summary>
/// 最大値を設定します。
/// </summary>
/// <param name="obj">対象オブジェクト(TextBox)</param>
/// <param name="value">最大値</param>
public static void SetMaxValue(DependencyObject obj, decimal? value) {
obj.SetValue(MaxValueProperty, value);
}

/// <summary>最大値</summary>
public static readonly DependencyProperty MaxValueProperty =
DependencyProperty.RegisterAttached("MaxValue", typeof(decimal?),
typeof(TextBoxBehavior),
new UIPropertyMetadata(null));

#endregion
}
}

次にWorkerクラスを実装する。つづく。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。