其它控件

在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() + ".";
            }
        }
    }
}

效果:

posted on 2012-04-18 17:06  WaitingSky  阅读(606)  评论(0编辑  收藏  举报