Input输入类控件丰富了我们的输入形式,合理地运用之,可以加快我们录入的速度。本文将为大家介绍Input类组件中的其他4个组件ButtonSpinner、DomainUpDown、NumericUpDown以及TimePicker的基础知识及其简单运用。
1、ButtonSpinner
组件所在命名空间:
System.Windows.Controls
组件常用属性:
Content:获取或设置包含在该组件中的内容。
ValidSpinDirection:获取或设置有效的转动方向。
组件常用事件:
Spin:由用户端初始化转动事件时触发。
2、DomainUpDown
组件所在命名空间:
System.Windows.Controls
组件常用属性:
CurrentIndex:获取或设置当前被选择项的索引。
FallbackItem:获取或设置一个项,该项在用户试图设置一个并不包含在域的值时显示。
InvalidInputAction:获取或设置一个值以决定该组件的行为,当用户试图设置一个并不包含在该域中的值时。
IsCyclic:获取或设置一个值用以表示该组件是否能够循环显示域中的值。
SpinnerStyle:获取或设置应用于转动按钮的样式。
Value:获取或设置该组件的值属性。
ValueMemberBinding:获取或设置将object对象转为string对象的Binding Object。
ValueMemberPath:获取或设置被用于识别值的Binding Path。
组件常用事件:
ValueChanged:当值属性已经改变后发生。
ValueChanging:当值属性正在改变中时发生。
3、NumericUpDown。
组件所在命名空间:
System.Windows.Controls
组件常用属性:
DecimalPlaces:获取或设置在该组件中显示的数值的数字位数。
Increment:获取或设置该组件的增长量步长。
Maximum:获取或设置该组件显示数值的最大值。
Minimum:获取或设置该组件显示数值的最小值。
组件常用事件:
ValueChanged:当值属性已经改变后发生。
ValueChanging:当值属性正在改变中时发生。
4、TimePicker
组件所在命名空间:
System.Windows.Controls
组件常用属性:
ActualCulture:获取被该组件用于格式化和解析的实际文化。
ActualFormat:获取在该组件中的时间的实际显示格式。
ActualTimeGlobalizationInfo:获取被用于该组件的实际TimeGlobalization信息。
ActualTimeParsers:获取将被该组件进行解析的实际TimeParsers。
ActualTimePickerPopup:获取被用于该组件的时间选择的实际弹出框。
Culture:获取或设置被该组件用于格式化和解析的文化。
Format:获取或设置在该组件中的时间的显示格式。
Maximum:获取或设置该组件的最大的有效时间。
Minimum:获取或设置该组件的最小的有效时间。
Popup:获取或设置该组件的下拉弹出框的模式。
PopupMinutesInterval:获取或设置弹出框中“分钟”的间隔数。
PopupSecondsInterval:获取或设置弹出框中“秒”的间隔数。
PopupTemplate:获取或设置弹出框的模板。
PopupTimeSelectionMode:获取或设置弹出框的时间选择模式。
TimeGlobalizationInfo:获取或设置策略的对象,确定如何控制DateTime和CultureInfo的交互。
TimeParsers:获取或设置该分析时使用的文字时间TimeParsers集合。
TimeUpDownStyle:获取或设置应用到的TimePicker控制TimeUpDown部分的样式。
组件常用事件:
ValueChanged:当值属性已经改变后发生。
ValueChanging:当值属性正在改变中时发生。
实例:
详细的说明在代码注释中给出。
MainPage.xaml文件代码:
<UserControl
xmlns=…http://schemas.microsoft.com/winfx/2006/xaml/presentation…
xmlns:x=…http://schemas.microsoft.com/winfx/2006/xaml…
xmlns:d=…http://schemas.microsoft.com/expression/blend/2008… xmlns:mc=…http://schemas.openxmlformats.org/markup-compatibility/2006…
mc:Ignorable=…d… xmlns:inputToolkit=…clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit… x:Class=…SilverlightClient.MainPage…
d:DesignWidth=…320… d:DesignHeight=…480…>
<Grid x:Name=…LayoutRoot… Width=…320… Height=…480… Background=…White…>
<inputToolkit:ButtonSpinner x:Name=…myBS… Height=…32… HorizontalAlignment=…Left… Margin=…8,38,0,0… VerticalAlignment=…Top… Content=…Test !… Width=…132… ValidSpinDirection=…Increase… RenderTransformOrigin=…0.5,0.5… FontSize=…18.667…/>
<inputToolkit:TimePicker x:Name=…myTP… PopupButtonMode=…Hover… Height=…30… HorizontalAlignment=…Left… Margin=…8,110,0,0… VerticalAlignment=…Top… Width=…132… FontSize=…18.667…/>
<inputToolkit:NumericUpDown x:Name=…myNUD… Height=…30… Margin=…169,110,8,0… VerticalAlignment=…Top… FontSize=…18.667… Width=…143…/>
<inputToolkit:DomainUpDown ValueMemberPath=…EmployeeID… FontSize=…34… x:Name=…myDUD… Margin=…8,0,23,115… Width=…289… IsCyclic=…True… Height=…75… VerticalAlignment=…Bottom… d:LayoutOverrides=…Height…>
<!--设置DomainUpDown的项模板-->
<inputToolkit:DomainUpDown.ItemTemplate>
<DataTemplate>
<Grid MinWidth=…230… Background=…#aa000000…>
<TextBlock Foreground=…#22ffffff… Margin=…4+0,2+0… FontSize=…14… Text=…员工信息:…/>
<StackPanel HorizontalAlignment=…Right…>
<TextBlock HorizontalAlignment=…Center… Foreground=…White… FontSize=…14… Text=…{Binding EmployeeID}… Padding=…2… />
<TextBlock HorizontalAlignment=…Center… Foreground=…White… FontSize=…14… Text=…{Binding EmployeeName}… Padding=…2… />
<TextBlock HorizontalAlignment=…Center… Foreground=…White… FontSize=…14… Text=…{Binding EmployeeAge}… Padding=…2… />
</StackPanel>
</Grid>
</DataTemplate>
</inputToolkit:DomainUpDown.ItemTemplate>
</inputToolkit:DomainUpDown>
<TextBlock Height=…26… HorizontalAlignment=…Left… Margin=…8,8,0,0… VerticalAlignment=…Top… Width=…132… Text=…ButtonSpinner… TextWrapping=…Wrap…/>
<TextBlock Height=…16… HorizontalAlignment=…Left… Margin=…8,80,0,0… VerticalAlignment=…Top… Width=…147… Text=…TimerPicker[Pop Normal]… TextWrapping=…Wrap…/>
<TextBlock Height=…26… Margin=…169,80,0,0… VerticalAlignment=…Top… Text=…NumericUpDown… TextWrapping=…Wrap… HorizontalAlignment=…Left… Width=…132…/>
<TextBlock Height=…26… HorizontalAlignment=…Left… Margin=…8,0,0,211… VerticalAlignment=…Bottom… Width=…132… Text=…DomainUpDown… TextWrapping=…Wrap…/>
<TextBlock x:Name=…tbResult… Height=…53… HorizontalAlignment=…Right… Margin=…0,17,19,0… VerticalAlignment=…Top… Width=…135… TextWrapping=…Wrap…/>
<inputToolkit:TimePicker x:Name=…myTP1… FontSize=…18.667… Height=…31… HorizontalAlignment=…Left… Margin=…8,182,0,0… VerticalAlignment=…Top… Width=…132…>
<!--设置TimePicker的弹出框-->
<inputToolkit:TimePicker.Popup>
<inputToolkit:RangeTimePickerPopup />
</inputToolkit:TimePicker.Popup>
</inputToolkit:TimePicker>
<TextBlock Height=…16… HorizontalAlignment=…Left… Margin=…8,153,0,0… VerticalAlignment=…Top… Width=…147… Text=…TimerPicker[Pop Range]… TextWrapping=…Wrap…/>
<TextBox x:Name=…tbIncrement… Height=…22… HorizontalAlignment=…Right… Margin=…0,153,8,0… VerticalAlignment=…Top… Width=…57… TextWrapping=…Wrap…/>
<TextBox x:Name=…tbDecimalPlaces… Height=…22… HorizontalAlignment=…Right… Margin=…0,179,8,0… VerticalAlignment=…Top… Width=…57… TextWrapping=…Wrap…/>
<TextBlock Height=…22… Margin=…0,153,69,0… VerticalAlignment=…Top… Text=…Increment:… TextWrapping=…Wrap… HorizontalAlignment=…Right… Width=…64…/>
<TextBlock Height=…22… Margin=…0,179,66,0… VerticalAlignment=…Top… Text=…DecimalPlaces:… TextWrapping=…Wrap… HorizontalAlignment=…Right… Width=…85…/>
<CheckBox x:Name=…chkIsEditable… Height=…20… HorizontalAlignment=…Right… Margin=…0,205,8,0… VerticalAlignment=…Top… Width=…75… Content=…IsEditable…/>
<Button x:Name=…btnChange… HorizontalAlignment=…Right… Margin=…0,225,8,222… Width=…111… Content=…Change!…/>
</Grid>
</UserControl>
MainPage.xaml.cs文件代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SilverlightClient
{
//业务辅助类
public class Employees
{
public int EmployeeID { get; set; }
public string EmployeeName { get; set; }
public int EmployeeAge { get; set; }
}
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
//注册事件触发处理
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
this.myBS.Spin += new EventHandler<SpinEventArgs>(myBS_Spin);
this.btnChange.Click += new RoutedEventHandler(btnChange_Click);
}
//更改NumericUpDown组件的属性
void btnChange_Click(object sender, RoutedEventArgs e)
{
if (tbIncrement.Text != String.Empty && tbDecimalPlaces.Text != String.Empty)
{
myNUD.Increment = Convert.ToDouble(tbIncrement.Text);
myNUD.DecimalPlaces = Convert.ToInt32(tbDecimalPlaces.Text);
}
if (chkIsEditable.IsChecked == true)
{
myNUD.IsEditable = true;
}
else
{
myNUD.IsEditable = false;
}
}
void myBS_Spin(object sender, SpinEventArgs e)
{
tbResult.Text = e.Direction.ToString();
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
myDUD.ItemsSource = GetEmployees();
}
//向DomainUpDown提供数据源
private List<Employees> GetEmployees()
{
List<Employees> returnedValue = new List<Employees>();
returnedValue.Add(new Employees() { EmployeeID = 1, EmployeeName = …张三…, EmployeeAge = 23 });
returnedValue.Add(new Employees() { EmployeeID = 2, EmployeeName = …李四…, EmployeeAge = 24 });
returnedValue.Add(new Employees() { EmployeeID = 3, EmployeeName = …王五…, EmployeeAge = 25 });
returnedValue.Add(new Employees() { EmployeeID = 4, EmployeeName = …赵六…, EmployeeAge = 26 });
returnedValue.Add(new Employees() { EmployeeID = 5, EmployeeName = …钱七…, EmployeeAge = 27 });
returnedValue.Add(new Employees() { EmployeeID = 6, EmployeeName = …孙八…, EmployeeAge = 28 });
return returnedValue;
}
}
}
最终效果图:
图一:正常模式的TimePicker弹出框
图二:时间范围选择模式的TimePicker弹出框