我想显示来自 List<>
的一些数据在 ListBox
没有后面的代码。
我尝试通过 ItemsSource
使用绑定(bind)和 DisplayMemberPath
但它不起作用。
模型:
public class PersonModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName
{
get
{
return $"{FirstName} + {LastName}";
}
}
}
View 模型:
public class ShellViewModel : Screen
{
List<PersonModel> people = new List<PersonModel>();
public ShellViewModel()
{
people.Add(new PersonModel { FirstName = "John", LastName = "Snow" });
people.Add(new PersonModel { FirstName = "Cersei", LastName = "Lannister" });
people.Add(new PersonModel { FirstName = "Bran", LastName = "Stark" });
}
}
查看(XAML):
<Label Grid.Column="1" Grid.Row="1" FontSize="30" FontWeight="Bold"
Content="Personal Data:" Margin="10"/>
<ListBox Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2"
ItemsSource="{Binding people}" DisplayMemberPath="FullName"/>
我哪里错了?我将不胜感激。
最佳答案
people
必须是公共(public)属性才能绑定(bind)到它:
public List<PersonModel> people { get; } = new List<PersonModel>();
您还需要设置
DataContext
的ListBox
, 或其父 Window
/UserControl
/etc.,到 ShellViewModel
的一个实例,除非您正在使用一些为您执行此操作的框架。
如果您使用
Caliburn.Micro
,这应该工作:<ListBox Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" x:Name="people" DisplayMemberPath="FullName"/>
您可能还想将属性名称更改为 电话 eople 来处理默认的 C# 命名约定。
关于c# - 在带有 MVVM 的 WPF 中,在 ListBox 中显示 List<> 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56396673/