2011-06-04 87 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

相关问题