如何在 WPF 应用程序中消耗 Web 服务?






3.33/5 (12投票s)
本文解释了如何在 WPF Windows 应用程序中使用 Web 服务。它需要将 WPF 控件绑定到来自 Web 服务的数据。
引言
本文解释了如何在 WPF Windows 应用程序中使用 Web 服务。它需要将 WPF 控件绑定到来自 Web 服务的数据。
参与绑定过程的主要对象是 DataContext
。 它作为 WPF Window 和大多数 WPF Framework 元素的 Dependency Property 提供。数据上下文是一个概念,它允许元素从其父元素继承有关用于绑定的数据源的信息,以及绑定的其他特性,例如路径。数据上下文可以直接设置为公共语言运行时 (CLR) 对象,绑定将评估为该对象的属性。或者,您可以将数据上下文设置为 DataSourceProvider
对象。此 Dependency Property 继承属性值。 如果有子元素没有通过局部值或样式建立的其他 DataContext
值,则属性系统将将该值设置为最近父元素的 DataContext
值,该父元素分配了此值。
创建 Web 服务
为了演示本文的目的,我们必须首先创建一个名为“MyWebService”的 ASP.NET Web 服务项目,并向该项目添加一个自定义类 WebContent
。此类具有一个字符串属性 GreetingMessage
和一个字段 Names
,一个字符串数组。
public class WebContent
{
string greet;
public string GreetingString
{
get
{
return greet;
}
set
{
greet = value;
}
}
public string[] Names;
}
为方便起见,创建一个 Web 服务方法,该方法设置属性的值并返回此自定义类型的对象。
这是 Web 服务定义的代码
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public WebContent CreateObject()
{
WebContent wc = new WebContent();
wc.GreetingString = "Hello World";
wc.Names = new string[5] {"Bala", "Murali",
"Balaji", "Krish", "Chris" };
return wc;
}
}
构建 Web 服务项目并进行测试运行以执行该方法。
创建一个使用 Web 服务的 WPF Window
现在,要在 WPF 应用程序中使用上面创建的 Web 服务,创建一个新的 WPF window 项目,并在窗体上添加几个 TextBlock
和 ListBox
控件。要调用 Web 服务,请从“项目”菜单添加一个服务引用,并在显示的对话框中提供 URL (https:///MyWebService/service1.asmx)。
在 WPF window 的 OnLoad
事件处理程序中为 Web 服务引用创建一个代理,并如下调用 CreateObject
方法
void OnLoad(object sender, RoutedEventArgs e)
{
WebReference.Service1SoapClient proxy =
new WebReference.Service1SoapClient();
this.DataContext = proxy.CreateObject();
}
CreateObject
方法的输出是 WebContent
类型,并设置为 Window
对象的 DataContext
。一旦我们这样做,该类型的所有可访问属性都可用于绑定到窗口中的不同元素。
现在,使用绑定到属性修改 XAML 代码,如下所示
<TextBlock Grid.Column="0" Grid.Row="0"
FontWeight="Bold" Text="Greeting Message:"/>
<TextBlock Grid.Column="1" Grid.Row="0"
FontWeight="Bold" Text="{Binding Path=GreetingString}" Foreground="Blue" />
<TextBlock Grid.Column="0" Grid.Row="1"
FontWeight="Bold" Text="List of Names: "/>
<ListBox Grid.Column="1" Grid.Row="1" Margin="0,3,0,0"
ItemsSource="{Binding Path=Names}" Foreground="Blue" />
构建 WPF window 项目并按 F5 运行它。
结论
在 WPF window 应用程序中创建和使用了一个 Web 服务。 DataContext
属性可以分配给 Web 服务方法返回的对象的类型。 这样,任何类型的属性都可以使用 Web 服务方法绑定到适当的 WPF 元素。