Wpf Listview未显示数据

本文关键字:数据 显示 Listview Wpf | 更新日期: 2023-09-27 18:24:42

我有一个如下所示的模型。。我不想做任何像INotify等的事情,因为视图中没有任何变化,我只想在视图中显示名称。在视图模型中,我公开了模型属性,因为在mvvm中,view应该只绑定到视图模型。但由于某种原因,这些名字没有显示出来。。请帮忙。。

namespace WpfApplication4
{
    public class Model
    {
        private string _name;
        public string name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }
    }
    public class make
    {
        List<Model> mod = new List<Model>();
        public make()
        {
            mod.Add(new Model { name = "Sam" });
            mod.Add(new Model { name = "Pam" });
            mod.Add(new Model { name = "Jam" });
            mod.Add(new Model { name = "Cam" });
        }
        public List<Model> modlist()
        {
            return mod;
        }
    }
}

视图模型:

namespace WpfApplication4
{
    public class ViewModel
    {
        private ObservableCollection<Model> _obcollection;
        private Model _Model;
        public Model model
        {
            get
            {
                return _Model;
            }
            set
            {
                _Model = value;
            }
        }
        public ViewModel()
        {
            Convert();
        }

        public void Convert()
        {
            make m = new make();
            _obcollection = new ObservableCollection<Model>(m.modlist());
        }
        public ObservableCollection<Model> obcollection
        {
            get
            {
                return _obcollection;
            }
            set
            {
                _obcollection = value;
            }
        }
    }
}

以及主窗口的Xaml。:

<Grid>
        <ListView Name="lstdemo" ItemsSource="{Binding obcollection}">
            <ListView.View>
                <GridView>
                    <GridView.Columns>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=model.name}" Header="Name" />
                    </GridView.Columns>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>

最后是MainWindow.cs

public MainWindow()
        {
            InitializeComponent();
            ViewModel vm = new ViewModel();
            this.DataContext = vm;
        }

Wpf Listview未显示数据

我认为您的xaml应该如下:

<Grid>
    <ListView Name="lstdemo" ItemsSource="{Binding obcollection}">
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=name}" Header="Name" />
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>

每个项目都已绑定到一个模型
使用DisplayMemberBinding="{Binding name}" 而不是DisplayMemberBinding="{Binding Path=model.name}"