有关Input类组件的研究——Silverlight学习笔记[42]
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
<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[
<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弹出框
文章出处:Kinglee’s Blog (http://www.cnblogs.com/Kinglee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。