using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace PDF_Office.CustomControl
{
///
/// NumericUpDown.xaml 的交互逻辑
///
public partial class NumericUpDown : UserControl
{
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(NumericUpDown), new PropertyMetadata("1"));
///
/// 当前值
///
public double Value
{
get { return (double)GetValue(ValueProperty); }
set
{
SetValue(ValueProperty, value);
if (value > Maximum)
{
SetValue(ValueProperty, Maximum);
}
else if (value < Minimum)
{
SetValue(ValueProperty, Minimum);
}
else
{
SetValue(ValueProperty, value);
TextBox_Num.Text = Value.ToString();
}
}
}
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(double), typeof(NumericUpDown), new PropertyMetadata(0.0, SelectedItemSourcePropertyChanged));
private static void SelectedItemSourcePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = d as NumericUpDown;
var value = (double)e.NewValue;
if (control != null)
{
control.TextBox_Num.Text = Convert.ToString(value);
}
}
///
/// 最大值
///
public double Maximum
{
get { return (double)GetValue(MaximumProperty); }
set { SetValue(MaximumProperty, value); }
}
public static readonly DependencyProperty MaximumProperty =
DependencyProperty.Register("Maximum", typeof(double), typeof(NumericUpDown), new PropertyMetadata(9999.0));
///
/// 最小值
///
public double Minimum
{
get { return (double)GetValue(MinimumProperty); }
set { SetValue(MinimumProperty, value); }
}
public static readonly DependencyProperty MinimumProperty =
DependencyProperty.Register("Minimum", typeof(double), typeof(NumericUpDown), new PropertyMetadata(0.0));
///
/// 增长步长
///
public double TickFrequency
{
get { return (double)GetValue(TickFrequencyProperty); }
set { SetValue(TickFrequencyProperty, value); }
}
public static readonly DependencyProperty TickFrequencyProperty =
DependencyProperty.Register("TickFrequency", typeof(double), typeof(NumericUpDown), new PropertyMetadata(1.0));
public Visibility ShowBtn
{
get { return (Visibility)GetValue(ShowBtnProperty); }
set { SetValue(ShowBtnProperty, value); }
}
public static readonly DependencyProperty ShowBtnProperty =
DependencyProperty.Register("ShowBtn", typeof(Visibility), typeof(NumericUpDown), new PropertyMetadata(Visibility.Visible));
public NumericUpDown()
{
InitializeComponent();
}
private void Button_Add_Click(object sender, RoutedEventArgs e)
{
int num = 0;
double targetvalue = 0;
bool result = int.TryParse(this.TextBox_Num.Text.Trim(), out num);
if (result)
{
targetvalue = num + TickFrequency;
}
else
{
targetvalue = Maximum;
}
if (targetvalue > Maximum)
{
targetvalue = Maximum;
}
this.TextBox_Num.Text = targetvalue.ToString();
Text = this.TextBox_Num.Text;
Value = targetvalue;
}
private void Button_Sub_Click(object sender, RoutedEventArgs e)
{
int num = 0;
double targetvalue = 0;
bool result = int.TryParse(this.TextBox_Num.Text.Trim(), out num);
if (result)
{
targetvalue = num - TickFrequency;
}
else
{
targetvalue = Minimum;
}
if(targetvalue