WPF:在MVVM中从viewmodel绑定listview itemsource

WPF:在MVVM中从viewmodel绑定listview itemsource,wpf,listview,itemssource,Wpf,Listview,Itemssource,我正在尝试为listview设置ItemSource属性,但未成功 视图(xaml): <ListView Margin="10" Name="MyLv" ItemsSource="{Binding}"> .... </ListView> public MyView() { InitializeComponent(); } private List<DataModel> lstData

我正在尝试为listview设置ItemSource属性,但未成功

视图(xaml)

<ListView Margin="10" Name="MyLv" ItemsSource="{Binding}">
....
</ListView>
    public MyView()           
    {
        InitializeComponent();
    }
    private List<DataModel> lstData = null;
    public MyViewModel()
    {          
        this.lstData = this.LoadData();  // this connects to a database an extract info to be loaded in listview
    }
视图模型

<ListView Margin="10" Name="MyLv" ItemsSource="{Binding}">
....
</ListView>
    public MyView()           
    {
        InitializeComponent();
    }
    private List<DataModel> lstData = null;
    public MyViewModel()
    {          
        this.lstData = this.LoadData();  // this connects to a database an extract info to be loaded in listview
    }

在此之前,我从code behind加载listview,它正在工作,但现在我想从我的viewmodel加载它,我不知道如何使其工作。

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

  • 您尚未设置视图的
    DataContext
    。通常需要将其设置为视图模型类的实例

  • ViewModel
    不会将列表公开为公共属性。WPF绑定只在公共属性上工作。
    ItemsSource
    应该绑定到此属性,而不是绑定到
    DataContext
    本身


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

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

  • 您尚未设置视图的
    DataContext
    。通常需要将其设置为视图模型类的实例

  • ViewModel
    不会将列表公开为公共属性。WPF绑定只在公共属性上工作。
    ItemsSource
    应该绑定到此属性,而不是绑定到
    DataContext
    本身

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

    请参见此处:基本上,
    ,但在您首先修复@Andy在此答案中提及的所有其他内容之前,此操作不会起作用。基本上,
    ,但在您首先修复@Andy在此答案中提及的所有其他内容之前,此操作不会起作用。