2011-06-04 77 views
2

我正在使用silverlight框架4:我試圖列出我的項目在通用列表中的列表框控件:但唯一的數據接收是類名稱本身。將泛型類型轉換爲列表框控件

lsBox => ListBox控件 lsTags =>泛型類型

我的問題是:我怎麼可以加我的項目在泛型列表,列表框控件?

我的代碼是:

lsBox.ItemsSource = lsTags; 
+1

+1反轉苛刻-1。人們請給新手一個機會。 – AnthonyWJones 2011-06-04 21:47:43

+0

謝謝AnthonyWJones – user 2011-06-05 09:28:46

回答

0

ListBox(和大多數其他控件),用於顯示用戶類型的默認行爲是調用ToString()方法。其默認行爲是顯示類名稱。

,你應該怎麼做,取決於你想顯示什麼,但如果是一些簡單的像顯示Name屬性的值,只需設置DisplayMemberPath property

<ListBox Name="lsBox" DisplayMemberPath="Name" /> 
+0

但是,我正在讀取一個.xml文件的值:通用變量lsTags包含數據,我只是將數據綁定到一個ListBox? – user 2011-06-04 14:38:15

+0

是的,將數據直接綁定到列表框。顯示數據的確切方式取決於「IsTags」的類型以及要顯示的內容。 – svick 2011-06-04 14:51:25

+0

Yeas ..我嘗試那樣做。但結果是:Clipboard.Tag(我的項目名稱).xml文件的其他類的標籤名稱。 lsTags是類型列表。 – user 2011-06-04 14:55:36

2

您可以使用DisplayMemberPathSelectedValuePath性質您的ListBox控件告訴ListBox應該爲每個項目顯示哪個屬性的值,以及哪些屬性應該用於阻止ListBox.SelectedValue屬性。或者使用ListBox.ItemTemplate來顯示這樣一個複雜的數據:

<ListBox x:Name="usersInGroupLBox"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <CheckBox IsChecked="{Binding IsActive, Mode=TwoWay}" /> 
       <TextBlock Text="{Binding User.UserName}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

不要忘了,你只能使用公共屬性結合。檢查你的課程Tag