无法在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>

无法在WPF应用程序中将集合绑定到列表视图

删除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>

如果你需要一个使用视图模型的例子,请告诉我。