Silverlight使用通過服務繫結資料的控制項

2022-02-09 22:30:55 字數 3289 閱讀 8829

這個標題有點繞口,下面進行詳細說明:開發乙個自定義控制項,這個控制項不是靜態的,它的資料是通過wcf來繫結的,要求引用這個控制項的同時也要引用到資料。關鍵點就是這個控制項依賴於wcf。

這是在silverlight群裡,一位朋友問的問題,當時也沒有說清楚,準備寫篇部落格詳細說明下。這裡只是簡單演示功能,不妥之處請見諒。

解決方案共有5個專案,兩個sl應用程式,兩個sl承載專案,以及乙個wcf專案。

datacontrol是sl應用程式,存放使用者控制項,datacontrol.web是對應的承載專案。

datacontrolservice是web專案,承載wcf。

ordermanagement是sl應用程式,用於呼叫datacontrol專案提供的使用者控制項,ordermanagement.web是對應的承載專案。

簡單的wcf,提供演示用資料

1:  

public

class usersservice : iusersservice

2:      ,
8:  

new user(),

9:  

new user(),

10:  

new user()

11:              };
12:  

return users;

13:          }
14:      }
15:
16:      [datacontract]
17:  

public

class user

18:
21:
22:          [datamember]
23:  

public

int age

24:
25:          [datamember]
26:  

public

string email

27:      }
這是userservice的內容,返回乙個user集合。

這個專案引用剛才的wcf服務,命名為userservice,會自動生成servicereferences.clientconfig。

servicereferences.clientconfig儲存著wcf的配置資訊。

users.xaml是使用者控制項

xaml檔案

1:  

<

grid

x:name

="layoutroot"

background

="yellowgreen"

>

2:  

<

stackpanel

>

3:  

<

textblock

text

="users"

/>

4:  

<

sdk:datagrid

x:name

="usersdatagrid"

5:  

autogeneratecolumns

="true"

height

="500"

/>

6:  

stackpanel

>

7:  

grid

>

對應的cs檔案

1:  

public users()

2:          ;
9:              client.usersasync();
10:          }
內容很簡單,呼叫wcf,通過乙個datagrid展現獲取的資料。

效果如下

便於區分,我們以黃綠色做為背景。

新增對datacontrol專案的引用,並把datacontrol的servicereferences.clientconfig拷貝過來。

把工具箱裡的users控制項拖到mainpage裡

mainpage.xaml

1:  

<

grid

x:name

="layoutroot"

background

="red"

>

2:  

<

stackpanel

>

3:  

<

textblock

text

="使用者管理"

/>

4:  

<

my:users

/>

5:  

stackpanel

>

6:  

grid

>

mainpage.xaml.cs 沒有任何** 只是承載users控制項。便於區分,背景色作為紅色。

執行效果如下

servicereferences.clientconfig 如果訪問wcf,sl會在當前執行環境找此檔案,如果沒有就會失敗,所以需要把此檔案拷到執行專案中。

本文是通過直接引用dll的方式,也可以通過webclient實現動態載入。

Silverlight通過ISA訪問WCF服務

維護乙個老程式,在使用者增加isa作為區域網與網際網路之間的防火牆之後,在網際網路上的使用者就無法讓頁面中的silverlight訪問wcf服務了,但在與伺服器在同乙個區域網中的使用者使用照常。使用isa使得網際網路的使用者必須通過https協議訪問防火牆後的web伺服器,wcf服務host在其中,...

Silverlight載入xap 使用WCF

這個問題搞了我乙個晚上,終於找到原因了,但還不知道是不是最終的解決辦法,先用著吧。我利用mef動態載入乙個外部xap。被載入的xap使用了wcf,單獨測試都通過,就是載入報錯,通過反覆分析,原因是在應用程式 xap 包中找不到檔案 servicereferences.clientconfig 被載入...

Silverlight設計時特性的使用

1 category mycategory 屬性分組,讓設計師能在 屬性的海洋 中快速找到自己需要的屬性 屬性隱藏,把不常用的屬性放在隱藏面板中,在需要時才展開面板 屬性描述,提示設計師該屬性的作用和注意事項 控制項內容,在物件樹中,提供ui元素插入的功能 5 style和template型別的屬性...