Silverlight学习笔记(42)- 有关Input类组件的研究

Input输入类控件丰富了我们的输入形式,合理地运用之,可以加快我们录入的速度。本文将为大家介绍Input类组件中的其他4个组件ButtonSpinnerDomainUpDownNumericUpDown以及TimePicker的基础知识及其简单运用。

 

1ButtonSpinner

组件所在命名空间:

System.Windows.Controls

 

组件常用属性:

Content:获取或设置包含在该组件中的内容。

ValidSpinDirection:获取或设置有效的转动方向。

 

组件常用事件:

Spin:由用户端初始化转动事件时触发。

 

2DomainUpDown

组件所在命名空间:

System.Windows.Controls

 

组件常用属性:

CurrentIndex:获取或设置当前被选择项的索引。

FallbackItem:获取或设置一个项,该项在用户试图设置一个并不包含在域的值时显示。

InvalidInputAction:获取或设置一个值以决定该组件的行为,当用户试图设置一个并不包含在该域中的值时。

IsCyclic:获取或设置一个值用以表示该组件是否能够循环显示域中的值。

SpinnerStyle:获取或设置应用于转动按钮的样式。

Value:获取或设置该组件的值属性。

ValueMemberBinding:获取或设置将object对象转为string对象的Binding Object

ValueMemberPath:获取或设置被用于识别值的Binding Path

 

组件常用事件:

ValueChanged:当值属性已经改变后发生。

ValueChanging:当值属性正在改变中时发生。

 

3NumericUpDown

组件所在命名空间:

System.Windows.Controls

 

组件常用属性:

DecimalPlaces:获取或设置在该组件中显示的数值的数字位数。

Increment:获取或设置该组件的增长量步长。

Maximum:获取或设置该组件显示数值的最大值。

Minimum:获取或设置该组件显示数值的最小值。

 

组件常用事件:

ValueChanged:当值属性已经改变后发生。

ValueChanging:当值属性正在改变中时发生。

 

4TimePicker

组件所在命名空间:

System.Windows.Controls

 

组件常用属性:

ActualCulture:获取被该组件用于格式化和解析的实际文化。

ActualFormat:获取在该组件中的时间的实际显示格式。

ActualTimeGlobalizationInfo:获取被用于该组件的实际TimeGlobalization信息。

ActualTimeParsers:获取将被该组件进行解析的实际TimeParsers

ActualTimePickerPopup:获取被用于该组件的时间选择的实际弹出框。

Culture:获取或设置被该组件用于格式化和解析的文化。

Format:获取或设置在该组件中的时间的显示格式。

Maximum:获取或设置该组件的最大的有效时间。

Minimum:获取或设置该组件的最小的有效时间。

Popup:获取或设置该组件的下拉弹出框的模式。

PopupMinutesInterval:获取或设置弹出框中“分钟”的间隔数。

PopupSecondsInterval:获取或设置弹出框中“秒”的间隔数。

PopupTemplate:获取或设置弹出框的模板。

PopupTimeSelectionMode:获取或设置弹出框的时间选择模式。

TimeGlobalizationInfo:获取或设置策略的对象,确定如何控制DateTimeCultureInfo的交互。

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弹出框

共有0个回答