WPF:从 MVVM 中的视图模型绑定列表视图项目源

WPF: Binding listview itemsource from viewmodel in MVVM

我试图为列表视图设置 ItemSource 属性 但没有成功。

查看 (xaml):

<ListView Margin="10" Name="MyLv" ItemsSource="{Binding}">
....
</ListView>

代码隐藏构造函数 (xaml.cs):

    public MyView()           
    {
        InitializeComponent();
    }

ViewModel:

    private List<DataModel> lstData = null;
    public MyViewModel()
    {          
        this.lstData = this.LoadData();  // this connects to a database an extract info to be loaded in listview
    }

数据模型:

public class DataModel
{
    public bool IsSelected { get; set; }
    public string ID { get; set; }
    public string Desc { get; set; }     
}

在此之前,我从代码隐藏加载列表视图并且它正在工作,但现在我想从我的视图模型加载它,但我不知道如何让它工作。

根据您发布的代码,存在几个问题:

  1. 您还没有设置视图的DataContext。您通常希望将其设置为视图模型的一个实例 class.

  2. ViewModel 不会将列表公开为 public 属性。 WPF 绑定仅适用于 public 属性。 ItemsSource 应该绑定到这个 属性,而不是 DataContext 本身。

最后,您可能希望 ViewModel 中的集合是 ObservableCollection。这样,当对集合进行更改时,UI 中的列表将自动更新。