其它控件
在windows phone中,还有很多控件,在这里我们主要看一下复选框CheckBox控件、进度条ProgressBar控件和Slider控件,至于经常用的ListBox控件在了解了资源及数据绑定这些定义之后再来关注。
CheckBox
CheckBox控件,它和RadioButton控件一样,也是继承自ToggleButton,除了Checked和UnChecked两个状态之外,还有一个不确定状态:Indeterminate,那这三种状态是不是和Windows经典的扫雷游戏有些相似:空白、选中、标记,貌似我们可以来模拟这个游戏哦。
CheckBox的主要事件还是Click(点击时发生)、Checked(选中时发生)、UnChecked(未选中时发生)、Tap(tap手势时发生)、Indeterminate(状态切换到不确定状态时发生)。另外就是它跟Button控件一样也是通过Content属性来设置显示信息的。
ProgressBar
ProgressBar控件,在应用程序中使用进度条控件可以有两种方式:一种是确切知道进度条剩余时间的情况下,可以使用精确时间比例的进度条,另一种是无法知道剩余时间的情况下,进度条仅表示“正在运行”状态,进度条应该是不断重复的。
ProgressBar控件的重要属性是IsIndeterminate,该属性获取或设置一个值,该值指示进度条是使用重复模式报告一般进度,还是基于 Value 属性报告进度。
Slider
Slider控件,这个控件用来显示比例关系,可以设置为垂直方向和水平方向。而鼠标(或手)在控件上点击的时候可以使控件的值增大或缩小。
常用属性:
IsDirectionReversed 获取或设置增加值的方向。
Orientation 获取或设置 Slider 的方向。
Value 获取或设置范围控件的当前数量。
简单地认识一下这些控件的使用。通过监听Slider的ValueChanged事件达到取值的目的。如
<!--ContentPanel - 在此处放置其他内容--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <CheckBox Content="选择试试看" Height="72" HorizontalAlignment="Left" Margin="30,62,0,0" Name="myCheckBox" VerticalAlignment="Top" IsThreeState="True" Checked="myCheckBox_Checked" Unchecked="myCheckBox_Unchecked" Indeterminate="myCheckBox_Indeterminate"/> <Slider Height="84" HorizontalAlignment="Left" Margin="12,209,0,0" Name="mySlider" Orientation="Horizontal" VerticalAlignment="Top" Width="438" Maximum="500" Minimum="0" Value="0" ValueChanged="mySlider_ValueChanged" /> <ProgressBar Height="5" HorizontalAlignment="Left" Margin="52,333,0,0" Name="myProgressBar" VerticalAlignment="Top" Width="350" IsIndeterminate="True" Maximum="500" Minimum="0" /> <TextBlock Height="156" HorizontalAlignment="Left" Margin="30,373,0,0" Name="myTextBlock" Text="" TextWrapping="Wrap" VerticalAlignment="Top" Width="386" /> </Grid>
后台:
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; using Microsoft.Phone.Controls; namespace Controls { public partial class Others : PhoneApplicationPage { private string state = "";//状态 private double myValue = 0;//值 public Others() { InitializeComponent(); } private void myCheckBox_Checked(object sender, RoutedEventArgs e) { state = "Checked"; this.myProgressBar.IsIndeterminate = false; myTextBlock.Text = "CheckBox的状态是:" + state + ",\nSlider的值是:" + myValue.ToString() + "."; } private void myCheckBox_Unchecked(object sender, RoutedEventArgs e) { state = "Unchecked"; this.myProgressBar.IsIndeterminate = true ; myTextBlock.Text = "CheckBox的状态是:" + state + ",\nSlider的值是:" + myValue.ToString() + "."; } private void myCheckBox_Indeterminate(object sender, RoutedEventArgs e) { state = "Indeterminate"; this.myProgressBar.IsIndeterminate = true; myTextBlock.Text = "CheckBox的状态是:" + state + ",\nSlider的值是:" + myValue.ToString() + "."; } private void mySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { if (mySlider != null) { myValue = mySlider.Value; this.myProgressBar.Value = myValue; myTextBlock.Text = "CheckBox的状态是:" + state + ",\nSlider的值是:" + myValue.ToString() + "."; } } } }
效果: