MVVM 模式中的 WPF 数据绑定列表框

本文关键字:数据绑定 列表 WPF 模式 MVVM | 更新日期: 2023-09-27 18:30:57

我是MVVM模式中的databind Listbox,我正在使用实体框架来获取数据,这就是我的做法

XAML:

<ListBox Margin="0,26,860,-146" x:Name="lstuser" ItemsSource="{Binding ListBoxDS}"/>

C# 代码:

private ObservableCollection<Users> _lstusers;
public ObservableCollection<Users> ListBoxDS
{
    get
    {
        if (_lstusers == null)
        {
            _lstusers = new ObservableCollection<Users>();
        }
        return _lstusers;
    }
    set
    {
        _lstusers = value;
        NotifyOfPropertyChange("ListBoxDS");
    }
}

public class Users
{
    public int UserID { get; set; }
    public string UserName { get; set; }
    public string FirstName { get; set; }
}      

数据上下文:

public static IList<Users> GetAllUsers
{
    try
    {
        using (var context = new ApplicationContext())               
        {
            return context.UsersInfo.ToList();
        }
    }
    finally
    {
    }
}

在我的视图模型中

var allusersList=GetAllUsers();
     var users = allusersList.Where(a => a.FirstName =="some value").ToList();
                        foreach (var item in users)
                        {
                            _lstusers.Add(new Users { UserID = item.Id, UserName = item.Username,FirstName=item.firstname });
                        }

当我毁了我的项目时,它没有在列表框中显示任何项目,我正在点击此链接我已经调试了它,数据出现在 ListDS 中。

MVVM 模式中的 WPF 数据绑定列表框

在您的代码中,我看不到您将该项目添加到列表中。 它应该是

var users = allusersList.Where(a => a.FirstName =="some value").ToList();
foreach (var item in users)
{
      ListBoxDS.Add(new Users { UserID = item.Id, UserName = item.Username,FirstName=item.firstname });
 }

编辑:然后,如果您设置了正确的DataContext,您的代码应该可以工作。 您可以在运行时使用 Snoop 进行检查。