台灣最大程式設計社群網站
線上人數
1725
 
會員總數:246319
討論主題:189850
歡迎您免費加入會員
討論區列表 >> CSS/HTML5/Bootstarp >> silverlight如何動態產生有圖片的按鈕
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
silverlight如何動態產生有圖片的按鈕
價值 : 10 QP  點閱數:2383 回應數:3
樓主

burgess
門外漢
0 1
17 0
發送站內信

請問一下

我剛學silverlight,很多東西都不太了解
我現在有一個folder存放user上傳的圖片
我的silverlight要如何動態產生含有這些圖片的button?
我的想法是
1、開啟folder
2、讀取img到一個array
3、動態產生button & image,用一個迴圈將2的array給image的source
這樣應該就可以了吧?
我比較不懂的是,1和2要如何做?

請問有相關的範例可以參考嗎?
謝謝

搜尋相關Tags的文章: [ silverlight ] ,
本篇文章發表於2012-02-01 23:40
1樓
最有價值解答

jonnyhuang
檢舉此回應
<UserControl.Resources>
<ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
<DataTemplate x:Key="DataTemplate1">
<Button>
<Image Source="{Binding}"/>
</Button>
</DataTemplate>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White" Loaded="LayoutRoot_Loaded">
<ListBox ItemsSource="{Binding}"
ItemTemplate="{StaticResource DataTemplate1}"
ItemsPanel="{StaticResource ItemsPanelTemplate1}"
VerticalAlignment="Top" />
</Grid>



ItemsPanel="{StaticResource ItemsPanelTemplate1}"
其實ListBox本身就是StackPanel容器物件,
因為StackPanel預設是垂直排列,所以我們透過去編輯ListBox的ItemsPanelTemplate,
將StackPanel的Orientation屬性改成水平,這樣ListBox的內容物就會水平排列

ItemTemplate="{StaticResource DataTemplate1}"
透過編輯ListBox的DataTemplate,我們可以客製化內容物要呈現的方式,
這邊我就放入一個Bution並在Button內在放入Image,

ItemsSource="{Binding}"
因為DataContext具有可被自物件繼承下來使用的特性,
也就是當你將資料指定給父容器(LayoutRoot)時,裡面子物件(ListBox)也可以由自己的DataContext屬性得到資料,
所以我們給ListBox的ItemsSource一個Binfing物件,實際資料則由DataContext提供
(資料繫結data binding部分若不熟悉可上網查詢,這算是Silverlight很常用的功能)

ObservableCollection<string>
在Silverlight專案內如果加入Web服務參考,你可以發現他預設的集合型別就ObservableCollection,
基本上他就跟List<>一樣只是他多了實作INotifyPropertyChanged介面,(這部分跟binding有關)

最後如果要抓取不同網域資料,也就是不同網站的資料,需要該網站有跨網域原則才可授權使用
本篇文章回覆於2012-02-02 17:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

jonnyhuang
檢舉此回應
附註:
我都會說Silverlight是一個可以崁入在瀏覽器內的Client端Windows Form程式,
而不識一個Web程式,因為不少人一直卡在拿他跟ASP.NET做比較,而會覺得為什麼無法用ADO.NET連結資料庫之類的問題上,
所以改用Windows Form的概念來思考會比較容易理解,
基本上要存取遠端資料,NET比較常見的就是透過Web Service,
所以關於你圖檔的部分你可以寫隻Web Service將要顯示圖檔資料抓出來,透過Web Service傳遞給Silverlight,
這部份就跟其他專案一樣直接在Silveright專案內加入服務參考即可。
本篇文章回覆於2012-02-02 17:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

jonnyhuang
檢舉此回應
更正:
Image.Source屬性
允許使用跨域URI 和指定方案,但不允許混合URI 方案(例如,從承載在由HTTP 提供服務的HTML 頁面上的Silverlight 插件訪問HTTPS 圖像)。
所以單純Image指定跨網域圖片不需要跨網域原則檔
本篇文章回覆於2012-04-03 09:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.