WPF:从MVVM中的viewmodel绑定listview itemsource

时间:2017-06-20 13:53:07

标签: wpf listview itemssource

我正在尝试为listview设置ItemSource属性而没有成功。

查看(xaml)

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

Code-Behind构造函数(xaml.cs)

    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
    }

数据模型:

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

在此之前,我正在从代码隐藏中加载listview,它正在运行,但现在我想从我的viewmodel加载它,我不知道如何让它工作。

1 个答案:

答案 0 :(得分:2)

根据您发布的代码,存在一些问题:

  1. 您尚未设置视图的templateContainer.cpp:5: error: ‘C’ is not a template templateContainer.cpp: In function ‘int main()’: templateContainer.cpp:10: error: no matching function for call to ‘f(std::vector<int, std::allocator<int> >&)’ 。您通常希望将其设置为视图模型类的实例。

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

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