這個標題有點繞口,下面進行詳細說明:開發乙個自定義控制項,這個控制項不是靜態的,它的資料是通過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:對應的cs檔案grid
>
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:mainpage.xaml.cs 沒有任何** 只是承載users控制項。便於區分,背景色作為紅色。grid
>
執行效果如下
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型別的屬性...