1.在Web服务端添加weatherService.svc 的WCF服务:
添加服务引用:
地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
在服务中写上:
public string[] GetCityName(string cityName)
{
//WeatherApp.Web.ServiceReference1.WeatherWebServiceSoapClient client = new WeatherWebServiceSoapClient("WeatherWebServiceSoap");
weatherService.WeatherWebServiceSoapClient client = new weatherService.WeatherWebServiceSoapClient("WeatherWebServiceSoap");
string[] cityNameArray = client.getSupportCity(cityName);
return cityNameArray;
}
//获得城市的天气(官网调整暂时不能用)
public string[] GetWeather(string cityName)
{
//.Web.ServiceReference1.WeatherWebServiceSoapClient client = new WeatherWebServiceSoapClient("WeatherWebServiceSoap1");
weatherService.WeatherWebServiceSoapClient client = new weatherService.WeatherWebServiceSoapClient("WeatherWebServiceSoap1");
string[] cityNameArray = client.getWeatherbyCityName(cityName);
return cityNameArray;
}
在对应接口中写上:
[OperationContract]
string[] GetCityName(string cityName);
[OperationContract]
string[] GetWeather(string cityName);
在silverlight客户端添加服务引用ServiceReference2:
在silverlight页面中就可以使用了:
public partial class SilverlightControl3 : UserControl
{
Silverlightjizhang.ServiceReference2.WeatherServiceClient client = new ServiceReference2.WeatherServiceClient();
public SilverlightControl3()
{
InitializeComponent();
//获得城市名字
client.GetCityNameCompleted += new EventHandler<ServiceReference2.GetCityNameCompletedEventArgs>(client_GetCityNameCompleted);
client.GetCityNameAsync("ALL");
//得到天气
client.GetWeatherCompleted+= new EventHandler<ServiceReference2.GetCityNameCompletedEventArgs>(client_GetCityNameCompleted);
client.GetWeatherAsync("北京");
}
void client_GetCityNameCompleted(object sender, ServiceReference2.GetCityNameCompletedEventArgs e)
{
if (e.Error == null)
{
var query = e.Result;
ObservableCollection<string> list = e.Result as ObservableCollection<string>;
if (list.Count > 0)
{
DropDownList1.ItemsSource = list;
//DropDownList1.DisplayMemberPath = "1";
DropDownList1.SelectedIndex = 0;
}
else
{
DropDownList1.Items.Add("没有可选择的数据");
}
}
else
{
MessageBox.Show(e.Error.Message);
}
}
}