MVVM模式中的WPF DataBinding ListBox

时间:2014-11-18 06:31:26

标签: c# wpf xaml mvvm

我是MVVM模式中的数据绑定Listbox,我使用Entity Framework获取数据,这就是我在做的事情

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; }
}      

的DataContext:

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

    }
}

和我的ViewModel

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 });
                        }

当我恢复我的项目时,它没有在列表框中显示任何项目,我正在关注this link 我调试了它,数据出现在ListDS中。

1 个答案:

答案 0 :(得分:1)

在您的代码中

我看不到您将该项添加到列表中。它应该是

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进行检查。