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)
你当前的实现有一些问题.首先,DataTemplate应放在ItemTemplate中ListBox.其次,每个DataContext ListBoxItem都是一个实例,Player所以你应该直接绑定到FirstName和LastName.第三,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)
| 归档时间: |
|
| 查看次数: |
3376 次 |
| 最近记录: |