我有一个模型如下。我不想做任何像 INotify 等的事情,因为 View 中没有任何变化,我只想在 View 中显示名称。并且在 View 模型中,我公开了模型属性,因为在 mvvm 中, View 应该只绑定(bind)到 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;
}
最佳答案
我相信您的 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>
关于c# - Wpf Listview不显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26078699/