gpt4 book ai didi

c# - 在带有 MVVM 的 WPF 中,在 ListBox 中显示 List<> 成员

转载 作者:行者123 更新时间:2023-12-03 10:56:26 28 4
gpt4 key购买 nike

我想显示来自 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>();

您还需要设置 DataContextListBox , 或其父 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com