WP开发之:Silverlight选择控件详解
之前的文章我们给大家讲述了Windows phone开发:Silverlight控件。选择控件用来显示两项及以上的内容,并允许用户进行选择。在Windows Phone 7中常见的此类控件有CheckBox、ListBox、RadioButton和Slider。下面分别介绍这几种控件的功能和常用方法。
1.CheckBox
该控件继承自ToggleButton,是一种可以让用户进行3种状态选择的控件。这3种状态为:选中、未选中和不确定。通过设置IsChecked属性来设置和判断控件当前的状态,如Ture为选中,False为未选中,Null为不确定,如图6-13所示为一个不确定选择的属性值。
▲图6-13 设置IsChecked属性
此外,CheckBox控件也是通过Content属性来设置其显示的文字内容的。
【XAML代码】
<CheckBox .../>
-或者-
<CheckBox>
声明内容的对象元素
</CheckBox>
-或者-
<CheckBox ...>一个字符串</CheckBox>
【示例】
下面来展现一下如何设置CheckBox控件的3种不同状态,并且查看不同状态下控件的外观。
1)首先建立一个新的Windows Phone Application项目文件,将CheckBox控件放入窗口中,一共放置3个。
2)修改每个控件的Content属性,并且根据Content内容设置控件的IsChecked属性,最终的结果如图6-14所示。
▲图6-14 设置CheckBox控件的最终结果
2.ListBox
ListBox控件提供一个显示项集合,用来显示多个项供用户选择。该控件是temControl,因此,可以使用Items或ItemsSource属性来设置其内容。可以在设计阶段直接设置ListBox内容,也可以在代码中添加其内容。另外,可以使用SelectionMode属性来指定ListBox是否允许多重选择。
【XAML代码】
<ListBox .../>
【示例】
下面通过一个示例来演示如何在代码中向ListBox添加项。在界面中,使用一个TextBox用于输入文本内容,使用一个Button来触发向ListBox添加项的操作,使用一个ListBox进行演示。
1)建立一个新的Windows Phone Application项目文件,在程序主窗口中添加一个TextBox,一个Button和一个ListBox。
2)设置TextBox的Text属性为在这里输入ListBox项内容,修改Button的Content属性为添加,将ListBox控件的大小调整到充满整个窗体的下部分,设置完毕后,程序主界面大致如图6-15所示。
▲图6-15 调整ListBox控件的程序主界面
3)示例的目标是为了在单击Button按钮的时候将TextBox中的内容添加为ListBox的项。因此,需要处理Button按钮的Click事件,双击Button按钮触发对Click事件的响应,并填写如下代码:
private void button1_Click(object sender, RoutedEventArgs e)
{
listBox1.Items.Add(textBox1.Text);
}
4)ListBox1是ListBox在本示例中一个实例的名字,这是由Visual Studio提供的默认名称,在此没有做修改。以上代码中调用了Item的Add方法来添加ListBox的项。
运行程序,在TextBox中分别输入aaa、bbb等字符,然后单击Button按钮,可以看到如图6-16所示的运行结果。
▲图6-16 添加ListBox内容的运行结果
事实上,有许多种方法可以在ListBox中显示数据,也可以通过在XAML代码中直接向列表添加项,或者将ItemsSource属性设置为一个集合来填充ListBox。还可以通过设置ItemTemplate来自定义每个ListBoxItem的显示方式。
3.RadioButton
该控件允许用户从一个列表中选择唯一的选项,这是通过设置RadioButton的组别来实现单选互斥的。可以通过将RadioButton放到其父控件内或者为多个RadioButton设置GroupName属性来对RadioButton进行分组。同一个组别中的RadioButton控件,只有一个能被用户选中。
RadioButton只有两种状态:选中或未选中。通过RadioButton的IsChecked属性来设置或者判断控件是否被选中的状态。被选中的RadioButton,其IsChecked属性为true,如果需
要清除选中的RadioButton,必须选中该组的另外一个RadioButton,而不能通过单选其本身来清除选中的状态。
RadioButton与之前介绍过的CheckBox控件十分类似,但是前者是一种只能在同组中单选的互斥按钮,而后者是一个可以实现复选的选择控件。
此外,RadioButton也是ContentControl,其内容属性为Content。
【XAML代码】
<RadioButton .../>
-或者-
<RadioButton...>
声明内容的对象元素
</RadioButton>
【示例】
本示例演示了一个互斥的条件选择场景:选择性别的程序界面。可以通过设置或检查RadioButton的IsChecked属性来改变控件的选中状态,如图6-17所示。
▲图6-17 改变RadioButton控件的选中状态
4.Slider
该控件用来显示一条类似轨道或者进度条的状态条,用户可以在其上一定范围内选择一个值。事实上,该控件常常应用在一个对值的选择更加形象化的场合,如常见的音量大小选择或者色彩比例的选择。
Slider控件可以设置其方向:水平或垂直方向,这是通过改变其属性Orientation的值来达到的。Slider控件的当前选择值保存在属性Value中,也可以通过设置其Maximum和Minimum来指定可选值的范围。
Slider还具有IsDirectionReversed属性,用来设置其初始的值状态:空或满。
【XAML代码】
<Slider …/>
【示例】
下面通过一个示例来演示如何获取Slider当前的值,这里需要注意一点,Slider控件有一个ValueChanged事件,这是Slider的一个主要事件,该事件在用户每次更改了Slider的选择值后触发。示例就需要来响应这样一个事件来更新显示用户当前选择的值。
1)首先建立一个新的Windows Phone Application项目文件,向程序添加两个Slider控件,并且设置其中一个Slider控件的Orientation属性的值为Vertical,默认为Horizontal,再添加两个TextBlock,设置其中一个TextBlock的Text属性为当前值,另一个为0,按图6-18所示排列所有控件。
▲图6-18 Slider控件
2)分别双击两个Slider控件以触发各自的ValueChanged事件,在这里使用Visual Studio默认的命名:Slider1和Slider2。ValueChanged事件的响应代码如下:
private void slider1_ValueChanged(object sender,
RoutedPropertyChangedEventArgs<double> e)
{
textBlock2.Text = slider1.Value.ToString();
}
private void slider2_ValueChanged(object sender,
RoutedPropertyChangedEventArgs<double> e)
{
textBlock2.Text = slider2.Value.ToString();
}
3)以上代码中,将Slider的Value值转换成String类型,并赋给textBlock的Text属性以显示出来。
程序运行后的结果如图6-19所示,单击Slider控件的不同位置会改变当前Slider属性Value的值,当然改变也会被TextBlock显示出来。
▲图6-19 Slider控件运行效果