วันอาทิตย์ที่ 26 ตุลาคม พ.ศ. 2551

ทำโปรเจ็ก Silverlight ตอนที่ 5 การใช้ ListBox และ Data Binding (เชื่อมโยงข้อมูล)

(แปลจาก blog ภาษาอังกฤษของ Scottguที่นี่)
หากต้องการตัวอย่าง SourceCode ฉบับเต็ม กดที่นี่

ตอนก่อน เราใช้ DataGrid ในแสดงผล ข้อมูลเว็บ Digg ในตอนนี้เราจะลองใช้ ListBox แสดงแทน เพื่อให้ข้อมูลดูเป็นรายการแทน (แทนการดูเป็นตาราง)

เริ่มต้น แทนคอนโทรล DataGrid ด้วยคอนโทรล <ListBox> โดยให้มีชื่อเหมือนเดิมว่า StoriesList :


เมื่อเรารันโปรแกรม แล้วลอง ค้นหา จะได้ผลดังนี้


คุณอาจประหลาดใจว่า คำว่า "DiggSample.DiggStory" มาจากไหน
เนื่องจาก ListBox ไม่รู้จะเอาค่าไหนของ DiggStory มา มันจึงเอามาจากฟังก์ชัน ToString() แทน

ให้เราเพิ่ม DisplayMemberPath="Title" เข้าไป ดังนี้

เราจะได้ผลดังนี้

เนื่องจาก เราต้องการแสดงผลมากกว่าหนึ่งฟิลด์ และเราต้องการจะจัดวางตำแหน่งข้อมูลใหม่ เราจึงสร้าง
<DataTemplate> ขึ้นมาไว้ใน <ListBox.ItemTemplate> แล้วใส่แท็กสำหรับจัดวางข้อมูลไว้ในภายใน
ตัวอย่างเช่น เราจะแสดง Title ,NumDigg ไว้ใน TextBlock ดังนี้

แล้วได้ผลดังนี้


เราลองมาทำในแบบที่ซับซ้อนขึ้นอีกนิดกัน ดังนี้


และใน App.xaml ก็กำหนด Style ไว้ดังนี้


ได้ผลดังนี้


ตอนหน้า จะเกี่ยวกับแสดงข้อมูล แบบหนึ่งต่อหลาย (Master/Details) ครับ

ไม่มีความคิดเห็น: