无法在WPF应用程序中将集合绑定到列表视图
本文关键字:绑定 集合 列表 视图 WPF 应用程序 | 更新日期: 2023-09-27 18:14:48
我正在开发一个WPF应用程序,我可以从当前在我的系统上运行的windows服务列表中读取一些属性。我能够读取特定服务的属性并将其传递给集合,该集合反过来显示在Listview下的UI中。
我希望对服务列表使用相同的场景。
我的代码
foreach (string serviceName in sList)
{
ServiceController controller = new ServiceController(serviceName);
StatusCollection.Add (new StatusData
{
Name = name,
Status = status
});
lvStatus.DataContext = StatusCollection;
lvStatus.ItemsSource = StatusCollection;
}
<ListView Height="166" HorizontalAlignment="Left" Margin="23,0,0,0" Name="lvStatus" VerticalAlignment="Top" Width="264" >
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"></GridViewColumn>
<GridViewColumn Header="Status" DisplayMemberBinding="{Binding Status}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
删除DataContext行代码
如果你在后面的代码中设置了ItemsSource,确保你在InitializeComponent被调用之前这样做。如果没有,则需要刷新Items集合。
然而,我会设置一个视图模型为您的窗口或控件实现INotifyPropertyChanged。将您的集合创建为ObservableCollection,并在XAML:
中绑定到它<ListView ... ItemsSource={Binding Path=ServiceList}>
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}" />
<GridViewColumn Header="Status" DisplayMemberBinding="{Binding Path=Status}" />
</GridView>
</ListView.View>
</ListView>
如果你需要一个使用视图模型的例子,请告诉我。