using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Controls;
using System.Collections.Generic;
namespace CustomUI.MyControls.Primitives
{
///
/// 用于日历显示时分秒的控件
///
public class NumberBox : ComboBox
{
static NumberBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(NumberBox), new FrameworkPropertyMetadata(typeof(NumberBox)));
}
#region 依赖属性
public static readonly DependencyProperty StartNumberProperty = DependencyProperty.Register("StartNumber"
, typeof(int), typeof(NumberBox));
///
/// 起始数字
///
public int StartNumber
{
get { return (int)GetValue(StartNumberProperty); }
set { SetValue(StartNumberProperty, value); }
}
public static readonly DependencyProperty EndNumberProperty = DependencyProperty.Register("EndNumber"
, typeof(int), typeof(NumberBox));
///
/// 结束数字
///
public int EndNumber
{
get { return (int)GetValue(EndNumberProperty); }
set { SetValue(EndNumberProperty, value); }
}
public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title"
, typeof(string), typeof(NumberBox));
///
/// 标题
///
public string Title
{
get { return (string)GetValue(TitleProperty); }
set { SetValue(TitleProperty, value); }
}
public static readonly DependencyProperty MaxDropDownWidthProperty = DependencyProperty.Register("MaxDropDownWidth"
, typeof(double), typeof(NumberBox));
///
/// 弹出框的最大宽度
///
public double MaxDropDownWidth
{
get { return (double)GetValue(MaxDropDownWidthProperty); }
set { SetValue(MaxDropDownWidthProperty, value); }
}
public static readonly DependencyProperty ShowShadowProperty = DependencyProperty.Register("ShowShadow"
, typeof(bool), typeof(NumberBox));
///
/// 是否显示阴影
///
public bool ShowShadow
{
get { return (bool)GetValue(ShowShadowProperty); }
set { SetValue(ShowShadowProperty, value); }
}
public static readonly DependencyProperty ShadowBlurProperty = DependencyProperty.Register("ShadowBlur"
, typeof(Thickness), typeof(NumberBox));
///
/// 阴影的显示方向
///
public Thickness ShadowBlur
{
get { return (Thickness)GetValue(ShadowBlurProperty); }
set { SetValue(ShadowBlurProperty, value); }
}
#endregion
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
List list = new List();
for (int i = StartNumber; i <= EndNumber; i++)
{
list.Add(i);
}
this.ItemsSource = list;
}
protected override DependencyObject GetContainerForItemOverride()
{
var item = new NumberBoxItem();
item.OnItemSingleClickHandler += Item_OnClickHandler;
return item;
}
private void Item_OnClickHandler(object sender, ItemMouseSingleClickEventArgs