XAML ListBox仅显示类名

Jac*_*ble 1 c# data-binding wpf xaml listbox

如何让我的类属性显示在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>
Run Code Online (Sandbox Code Playgroud)

C#:

public class Player
{
    string FirstName { get; set; }
    string LastName { get; set; }
}


public void LoadPlayers()
{
    foreach (Player player in Players)
    {
         lstPlayers.Items.Add(player);
     }
}
Run Code Online (Sandbox Code Playgroud)

ListBox中唯一出现的是

TestApplication1.Player
Run Code Online (Sandbox Code Playgroud)

Fre*_*lad 8

你当前的实现有一些问题.首先,DataTemplate应放在ItemTemplate中ListBox.其次,每个DataContext ListBoxItem都是一个实例,Player所以你应该直接绑定到FirstNameLastName.第三,Player应该公开属性以使DataBinding工作.

<ListBox x:Name="lstPlayers" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding FirstName}"></TextBlock>
                <TextBlock Text="{Binding LastName}"></TextBlock>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
public class Player
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

此外,不是逐项添加集合,而是将其ListBox设置为ItemsSource

lstPlayers.ItemsSource = Players;
Run Code Online (Sandbox Code Playgroud)