XAML ListBox 仅显示类名
如何让我的类属性显示在列表框中?
XAML:
<ListBox x:Name="lstPlayers" >
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Player.FirstName}"></TextBlock>
<TextBlock Text="{Binding Player.LastName}"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox>
C#:
public class Player
{
string FirstName { get; set; }
string LastName { get; set; }
}
public void LoadPlayers()
{
foreach (Player player in Players)
{
lstPlayers.Items.Add(player);
}
}
列表框中唯一显示的是
TestApplication1.Player
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您当前的实施存在一些问题。首先,DataTemplate 应放置在
ListBox
的 ItemTemplate 内。其次,每个ListBoxItem
的 DataContext 将是Player
的一个实例,因此您应该直接绑定到FirstName
和LastName
。第三,Player
中的属性应公开,以便 DataBinding 正常工作。另外,不必将集合逐项添加到
ListBox
中,只需将其设置为 ItemsSourceYou have some problems with you current implementation. First, the DataTemplate should be placed inside the ItemTemplate for the
ListBox
. Second, the DataContext for eachListBoxItem
will be an instance ofPlayer
so you should bind directly toFirstName
andLastName
. Third, the properties inPlayer
should be made public for the DataBinding to work.Also, instead of adding the collection item by item to the
ListBox
, just set it as ItemsSourceDataTemplate 应位于 ListBox.ItemTemplate 内。
DataTemplate should be inside ListBox.ItemTemplate.
将集合、Players 设置为 ItemSource
并
set the collection, Players as ItemSource
and
您必须将数据类型添加到您的数据模板中。
local 是 TestApplication1.Player 的命名空间。您可以将数据模板设置为 listebox.itemtemplate 或作为任何“父对象”的资源
you have to add the DataType to your DataTemplate.
local is the namespace for your TestApplication1.Player. you can set the datatemplate to the listebox.itemtemplate or as a resource of any "parent object"