2009-05-04 66 views
1

我第一次測試WPF,並試圖用ObjectDataProvider調用WCF服務。如何使用ObjectDataProvider將WPF控件綁定到WCF方法

WCF服務名爲WcfService1有一個方法:

namespace WcfService1 
{ 
    public class Service1 : IService1 
    { 

     public String HelloWorld() 
     { 
      return "Hello World!"; 
     } 
    } 
} 

我添加了一個服務引用到我的WPF項目,並把它命名爲TestService的

在我的主窗口中,我可以把這個沒有代碼問題背後。看起來很簡單;像網絡服務電話:

TestService.Service1Client service = new TestService.Service1Client(); MessageBox.Show(service.HelloWorld());

我想創建一個指向此服務的ObjectDataProvider。我想我對ObjectType應該是什麼感到困惑?我試過本地,服務名稱空間,src;我迷路了:

<Window.Resource> 
    <ObjectDataProvider 
     x:Key="odpTestService" 
     ObjectType="{x:Type **TestService**:Service1Client}" 
     MethodName="HelloWorld" /> 
</Window.Resources> 

Ultimatly它將綁定到一個TextBlock:

<TextBlock Grid.Column="0" Grid.Row="0" 
Grid.ColumnSpan="2" Background="AliceBlue" 
Text="{Binding Source={StaticResource odpTestService}}" /> 

我試圖從Flickr的例子張貼在這裏工作:http://khason.net/blog/wpf-binding-to-wcf-and-more/

更新: 的丹尼斯的回答確實解決了這個問題的一部分。現在,編譯時出現錯誤: System.Windows.Data錯誤:34:ObjectDataProvider:嘗試調用類型方法失敗;

ObjectDataProvider無法調用類型IService1的HelloWorld方法(使用我的示例中的方法和類型)。任何想法爲什麼?

回答

1

您需要在文件的頂部經過了xmlns指令導入服務的命名空間:

假設參考已直接添加到您的應用程序,並且您的應用程序的根命名空間是「MyApplication的」:

<Window x:class="MyApplication.MyWindow" 
     xmlns:srv="MyApplication.TestService"> 

     <Window.Resource> 
      <ObjectDataProvider 
       x:Key="odpTestService" 
       ObjectType="{x:Type srv:Service1Client}" 
       MethodName="HelloWorld" /> 
     </Window.Resources> 

     <TextBlock Grid.Column="0" Grid.Row="0" 
      Grid.ColumnSpan="2" Background="AliceBlue" 
      Text="{Binding Source={StaticResource odpTestService}}" /> 

</Window> 
+0

哇丹尼斯,這是我的一個大腦袋。謝謝。 – 2009-05-05 01:44:53

相關問題