博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用webxml来构建wp的天气预报
阅读量:5261 次
发布时间:2019-06-14

本文共 4319 字,大约阅读时间需要 14 分钟。

在wp里,我们可以根据一些网站的API来达到一些目的。例如获取天气预报就是这样。在这个网址里提供一些api供我们使用。

首先,新建一个项目,然后修改前台界面代码。

View Code

打开上面那个网址,我们可以看到下面有一个2500城市天气预报,点击进去,可以看到有很多方法供我们调用:

我们需要的就是下面的getWeather这个方法。

点击进去之后随便输入一个城市,返回给我们的是xml格式的信息:

接下来,回到项目,添加一个服务引用,地址就是上面2500城市天气的网址。

添加完之后我们就可以实现api的调用了。

在后台添加好相应的对象实例化,同时实例化一个list来存放反馈的信息

ServiceReference1.WeatherWSSoapClient w = new ServiceReference1.WeatherWSSoapClient();List
msg = new List
();

然后在按钮事件里获取要查询的城市名称并异步发送,同时接收返回信息:

private void btn_search_Click(object sender, RoutedEventArgs e)        {            w.getWeatherAsync(txt_search.Text.ToString(), "");            w.getWeatherCompleted += new EventHandler
(w_getWeatherCompleted); }

上面的getWeatherAsync的两个参数就是城市名和id,id可以忽略为空。

w_getWeatherCompleted方法:

View Code
void w_getWeatherCompleted(object sender, ServiceReference1.getWeatherCompletedEventArgs e)        {            if (e.Error == null)            {                try                {                    for (int i = 0; i < e.Result.Length; i++)                    {                        string s = e.Result[i];                        msg.Add(s);                    }                    if (msg.Count > 0)                    {                        setMsg();                    }                }                catch (Exception)                {                    MessageBox.Show("灰常遗憾,亲,网络有误或者地名有误~");                }            }                    }

然后再在后台调用一个方法给前台的控件赋值(在这里我图方便,所以用了很多控件,其实可以用一个listbox来解决的。不过这里就不重复了)。

同时,我们根据返回的字符串来绑定相应的图片,图片的命名格式我也改了,随后会在代码附件里有。

View Code
public void setMsg()        {            lbl_today.Text = msg[7];            lbl_temp.Text = msg[8];            lbl_wind.Text = msg[9];            img_today.Source = setImg(msg[10]);            lbl_today1.Text = msg[12];            lbl_temp1.Text = msg[13];            lbl_wind1.Text = msg[14];            img_today1.Source = setImg(msg[15]);            lbl_today2.Text = msg[17];            lbl_temp2.Text = msg[18];            lbl_wind2.Text = msg[19];            img_today2.Source = setImg(msg[20]);            lbl_today3.Text = msg[22];            lbl_temp3.Text = msg[23];            lbl_wind3.Text = msg[24];            img_today3.Source = setImg(msg[25]);            lbl_today4.Text = msg[27];            lbl_temp4.Text = msg[28];            lbl_wind4.Text = msg[29];            img_today4.Source = setImg(msg[30]);        }        public BitmapImage setImg(string str)        {            Uri uri = new Uri("Images/" + str.Substring(0, str.IndexOf('.')) + ".png", UriKind.Relative);            BitmapImage bmp = new BitmapImage(uri);            return bmp;        }

 编译运行就可以了。

代码附件: 

 

 

转载于:https://www.cnblogs.com/dieaz5/archive/2013/04/07/3005894.html

你可能感兴趣的文章
记录SSD中的一些东西
查看>>
第二十一章 Django的分页与cookie
查看>>
表示一个文件的 File 类型
查看>>
ORA-01403:no data found 解决办法
查看>>
当 智能箭头 碰到 方向箭头 。。。。。。。
查看>>
巧妙运用ViewStub写出类似Tab选项卡(想怎么写tab就怎么写,横着写竖着写随你)(转)...
查看>>
WPF的2D图形化实现--WPF 集装箱堆场图形化实现实例
查看>>
(转)从零实现3D图像引擎:(10)Hello3DWorld
查看>>
C#中时间差的计算
查看>>
Mysql 常用命令
查看>>
文件导出
查看>>
JAVA-各种类型之间转换 parse() 与valueOf()
查看>>
ubuntu1404安装配置java环境(jdk8)
查看>>
MySQL深层理解,执行流程
查看>>
AIR概述
查看>>
一、二、三原则
查看>>
机器学习系列------1. GBDT算法的原理
查看>>
CSS中如何实现DIV居中
查看>>
二维动态规划(2)
查看>>
hibernate中增加annotation @后不提示信息【转】
查看>>