C# 将ObservableCollection绑定到MVVM中的ListView-显示特定属性
所以我得到了一个模型:C# 将ObservableCollection绑定到MVVM中的ListView-显示特定属性,c#,wpf,mvvm,C#,Wpf,Mvvm,所以我得到了一个模型: public class MyModel{ public ObservableCollection<MyObject> myObject {get; set;} } 这是我的ViewModel的相关部分: private MyModel theModel = new MyModel(); public MyModel TheModel {get; set;} 这就是观点 <ListView.BindingContext> <
public class MyModel{
public ObservableCollection<MyObject> myObject {get; set;}
}
这是我的ViewModel的相关部分:
private MyModel theModel = new MyModel();
public MyModel TheModel {get; set;}
这就是观点
<ListView.BindingContext>
<viewmodel:MyViewVM/>
</ListView.BindingContext>
<Label Text="{Binding myModel.myObject.number"} .... />
- 为什么它只显示最后一个数字
- 我如何说:ItemsSource应该是模型;但是在列表中,应该只显示模型内对象的“number”或“name”属性
- 我想你在用这个
你应该使用,这就是WPF
使用正确的XAML后,将XAML更改为:
<ListView ItemsSource="{Binding myObject}" DisplayMemberPath="number">
<ListView.DataContext>
<local:MyModel />
</ListView.DataContext>
</ListView>
其他类基本不变,我只是添加了一些示例数据:
public class MyModel
{
public MyModel()
{
myObject = new ObservableCollection<MyObject>
{
new MyObject { name = "John", number = 5 },
new MyObject { name = "Jane", number = 6 },
new MyObject { name = "Sam", number = 9 },
new MyObject { name = "Lara", number = 16 }
};
}
public ObservableCollection<MyObject> myObject { get; set; }
}
public class MyObject
{
public int number { get; set; }
public string name { get; set; }
}
公共类MyModel
{
公共MyModel()
{
myObject=新的可观察集合
{
新的MyObject{name=“John”,number=5},
新的MyObject{name=“Jane”,number=6},
新的MyObject{name=“Sam”,number=9},
新的MyObject{name=“Lara”,number=16}
};
}
公共可观察集合myObject{get;set;}
}
公共类MyObject
{
公共整数{get;set;}
公共字符串名称{get;set;}
}
如果向myObject
集合添加新元素(顺便说一句,我建议对公共属性名称使用PascalCase),UI将被更新。
注意,如果您更改了MyObject
元素属性之一(例如name
),您将不会在UI上看到该属性
要获得正确的更改通知,请实现该接口
public class MyModel
{
public MyModel()
{
myObject = new ObservableCollection<MyObject>
{
new MyObject { name = "John", number = 5 },
new MyObject { name = "Jane", number = 6 },
new MyObject { name = "Sam", number = 9 },
new MyObject { name = "Lara", number = 16 }
};
}
public ObservableCollection<MyObject> myObject { get; set; }
}
public class MyObject
{
public int number { get; set; }
public string name { get; set; }
}