在WPF中,如何访问ListView的项目?
我知道SelectedValuePath="..."
,但在我的ListView中它显示7列。
例如,GridViewColumn
包含房间号,我想将所有房间号行放在列表中,并为所有列进行此操作。
答案 0 :(得分:2)
列表视图的单元格由对象列表生成,其中每列都有几个绑定。
你要求的不是WPF方式,而是旧式方法(例如winforms)。 WPF完全不同,访问单元格很麻烦(我添加的也不可靠)。
了解已选择的对象后,只需访问绑定了各列的属性即可。
答案 1 :(得分:0)
WPF处理数据源的方式与WinForms不同。起初,它似乎在WPF中更复杂,因为您无法像在WinForms中那样访问源集合。但是,您很快就会发现WPF使得开发更自然。
在WPF中,您希望将 UI控件(例如ListView)绑定到数据源。数据源只是您希望它的任何自定义类型的代码隐藏中的集合。只要您授予对集合的适当访问权限,您的任何代码隐藏都可以访问源数据,而无需与ListView通信。
对于列表视图,数据源将是DataContext上的ObservableCollection,您的视图将连接到该DataContext。类型 T 是自定义类类型。通过XAML代码,您可以在ListView上定义一个数据模板,该模板描述了如何为每个数据项显示自定义类类型的属性。
要了解更多信息,请研究MVVM UI模式并研究INotifyPropertyChanged接口。
例如:
代码背后
internal class MyViewModel
{
public ObservableCollection<Person> People = new ObservableCollection<People>();
// code to populate People
}
public class MyWindow
{
public MyWindow()
{
DataContext = new MyViewModel();
}
}
查看强>
<ListView ItemsSource={Binding Path=People, Mode=OneWay}>
<ListView.DataTemplate>
<Label Content={Binding Path=FirstName, Mode=OneWay} />
<!-- Blah blah blah -->
</ListView.DataTemplate>
</ListView>
This MSDN文章详细介绍(请参阅底部的代码片段和示例)。