zoukankan      html  css  js  c++  java
  • <WP7>(二)手把手教你写天气预报程序:UserControl的运用

                    那么,开始吧。首先确认安装了window phone SDK(没有的先去安装,SDK自带VS2010 Express版,还有就是电脑系统要是win7,XP不支持微软原版的模拟器,不过可以使用传智播客做的模拟器,具体自己百度)。如果本来安装了VS2010 ultimate的。可以用之开发,但是确认升级到了SP1版,不然不能使用,而且,如果本来的VS2010是中文版,那么需要到C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp(C盘为SDK安装目录),复制Silverlight for Windows Phone文件夹(此为window phone模板)到C:\Users\用户名\Documents\Visual Studio 2010\Templates\ProjectTemplates\Visual C#下,这样原来的中文版VS2010就能识别window phone模板了。

              打开VS2010。无论你打开的是中文版的还是英文版的,我用的是中文版的,我下面所说的操作大部分都是中文的。如果你英文不好还要用英文版的(虽然基本没几个英文单词),如果找不到我也没办法了(不过大部分应该都附图)。

            点击文件---新建----项目,在左边的模板里面选择visual C#,然后再选择silverlight for window phone,然后在右边选择 window phone application。填入名称:WeatherForecast    具体如下图:

     

    然后在这个弹窗,选择OS 7.1

    点击OK

    点击确定。现在也可以点击运行。

    运行方法:先看这

    绿色三角后面选择的是Emulator,就是模拟器。还有一个选项是Device,就是手机。确认选择的是模拟器,点击绿色三角或者按F5运行。运行成功!

     

    我觉得这么一个程序,首先应该要能够获取到天气信息展示到界面。先分析下界面应该怎么做吧。新手看到这么复杂的界面大部分还真是无从入手。

    观察界面,就是一个Grid的布局。但是麻烦的是右边的预报后几天天气的布局。单靠grid布局达不到如此效果。

    所以把这做成UserControl。这样更容易布局。也可以展示下UserControl的应用。

     现在,先添加一个UserControl。在右边的解决方案管理器,在WeatherForecast上右键,添加,新建项。添加一个window phone user control。命名为ForecastTemplate,点击添加,如图:

     

    在ForecastTemplate.xaml。里面的name为LayoutRoot的grid里面添加两个TextBlock,一个Image。

    具体代码如下:

    <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <TextBlock Grid.Column="0" Grid.Row="0"
                       x:Name="weekday" HorizontalAlignment="Center"
                       VerticalAlignment="Top" Text="星期八"
                       FontSize="24"/>
            <TextBlock Grid.Column="0" Grid.Row="1"
                       x:Name="temp" HorizontalAlignment="Center"
                       VerticalAlignment="Top" FontSize="24"
                       Text="7℃~29℃"/>
            <Image x:Name="WImg" Grid.Column="1" Grid.Row="0"
                   Grid.RowSpan="2" VerticalAlignment="Center"
                   HorizontalAlignment="Left"/>

    现在在左边的设计框显示的是这样的

     

     

     

     我们需要从外部给这个UserControl的Textblock或者Image的属性赋值,那么需要给ForecastTemplate这个类添加成员变量来控制Textblock或者Image的属性。那么。转到ForecastTemplate.xaml.cs页面。也就是在ForecastTemplate.xaml的代码页面,右键,查看代码。就看到了。

    ForecastTemplate.xaml.cs页面,在ForecastTemplate类中添加如下的成员。

    //定义Image的Source属性。这样这个用户控件就能从外面访问到这个Image控件的Source属性了
            private string _imageUri;
    
            public string ImageUri
            {
                get
                {
                    return _imageUri;
                }
                set
                {
                    _imageUri = value;
                    BitmapImage bmp = new BitmapImage(new Uri(value, UriKind.Relative));
                    WImg.Source = bmp;
                }
            }
    
            //定义了TextBlock的Text属性。外头就可以给这个Text属性赋值了
            private string _weekday;
    
            public string Weekday
            {
                get
                {
                    return _weekday;
                }
                set
                {
                    _weekday = value; ;
                    weekday.Text = value;
                }
            }
    
    
            private string _temp;
    
            public string Temp
            {
                get
                {
                    return _temp;
                }
                set
                {
                    _temp = value;
                    temp.Text = value;
                }
            }


    是否发现在这显示红色波浪线?

     因为没有引入命名空间。在BitmapImage上右键。解析,选择第一个Using。这样就引入了命名空间。这里提这个主要是给新手提个醒,遇到错误不要着急。先看清楚是什么状况。解决就好了。

    现在转到MainPage.xaml页面。先添加命名空间。

    xmlns:my="clr-namespace:WeatherForecast"


    贴图展示命名空间添加位置。

     这个命名空间namespace:后面跟的是当前的工程名。需要访问当前工程空间的页面都要添加。

    现在,在代码页面尝试添加Usercontrol吧。

    正确添加命名空间。智能提示就能访问到Usercontrol。

     

     现在添加一些图片资源文件到工程。我这工程添加的图片资源可以到这下载:http://dl.dbank.com/c0wsbg3ju1

    直接右键解压到Images文件夹。然后复制整个Images文件夹到工程里,具体操作:复制文件夹,然后解决方案资源管理器右键WeatherForecast这个工程,选择粘贴就完成了引入资源到工程。

     现在到MainPage.xaml中添加代码:

    Name为contentPanel的grid添加代码。

    <my:ForeCastTemplate Temp="7℃~11℃" Weekday="星期天"
                    Width="300" Height="200" 
                      ImageUri="/WeatherForecast;component/Images/sunday.jpg" />

    一开始ForecastTemplate下面会显示蓝色波浪线,而且在设计框里也不显示控件。运行一次就好。运行一次后,在设计框里显示如下:

    好了,这一节就到这吧。省得篇幅太长了。这节主要介绍了UserControl的运用。如有问题可以直接留言。

    这节工程代码下载:

    http://dl.dbank.com/c0awblgtqp

     

    继续学习:<WP7>(三)手把手教你写天气预报程序:运用WebClient获取天气和json数据解析

  • 相关阅读:
    DevOps Workshop 研发运维一体化(北京第二场) 2016.04.27
    DevOps Workshop 研发运维一体化(成都站) 2016.05.08
    TFS 2015 生成不输出任何结果
    挂起的更改中的“解析”是什么意思?原来是微软错误的翻译
    微软研发流程(ALM)管理培训会议(比亚迪汽车)
    TFS实战培训
    【实战TFS】【QQ群】了解别人是如何使用TFS的
    DevOps Workshop 研发运维一体化(广州站)
    制作Visual Studio 2017 (VS 2017) 离线安装包
    在每页(分页)报表中重复显示标题
  • 原文地址:https://www.cnblogs.com/fengyun1989/p/2476956.html
Copyright © 2011-2022 走看看