C# WPF—尝试创建绑定到数据源的多选表时使用Datagrid、ListView或Listbox

C# WPF—尝试创建绑定到数据源的多选表时使用Datagrid、ListView或Listbox,c#,wpf,xaml,C#,Wpf,Xaml,我是WPF的新手,我正在尝试重新创建这样的设计: 我需要的特性是:能够多选一行(因此右边的复选框),能够绑定到数据源并加载数据。最后,在某些行上包含一个小图标的功能 在谷歌搜索之后,我发现了ListView、ListBox和DataGrid控件,但它们似乎都可以做一些事情,但不是我所需要的全部。有人能告诉我哪种方法是最好的吗?我个人更喜欢使用DataGrid进行类似的操作。它们非常灵活,一旦你习惯了,就很容易使用。基于您的问题,我假设您对WPF中的绑定有一点了解。假设您的类实现了iNotify

我是WPF的新手,我正在尝试重新创建这样的设计:

我需要的特性是:能够多选一行(因此右边的复选框),能够绑定到数据源并加载数据。最后,在某些行上包含一个小图标的功能


在谷歌搜索之后,我发现了ListView、ListBox和DataGrid控件,但它们似乎都可以做一些事情,但不是我所需要的全部。有人能告诉我哪种方法是最好的吗?

我个人更喜欢使用
DataGrid
进行类似的操作。它们非常灵活,一旦你习惯了,就很容易使用。基于您的问题,我假设您对WPF中的绑定有一点了解。假设您的类实现了
iNotifyPropertyChanged
a
DataGrid
,那么它应该可以很好地为您工作。在下面的示例中,您必须根据类属性名更改绑定

此示例没有使用内置的
DataGridCheckBoxColumn
,因为它往往会出现问题(即,在单击它之前需要先聚焦)。这也将使您了解如何实现图标列。您可以通过按住控件并抓取不同的行来进行多行选择,也可以使用复选框将它们绑定到类中的属性,以便以后访问

<DataGrid Name="dataGrid" AutoGenerateColumns="False" SelectionMode="Extended">
  <DataGrid.Columns>
    <DataGridTemplateColumn>
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <CheckBox IsChecked="{Binding Select, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    <DataGridTextColumn Header="Name" MinWidth="150" SortMemberPath="Name" Binding="{Binding Name}" IsReadOnly="True"/>
    <DataGridTextColumn Header="University"  Binding="{Binding University}" IsReadOnly="True"/>
    <DataGridTextColumn Header="Age"  Binding="{Binding Age}" IsReadOnly="True"/>
  </DataGrid.Columns>
</DataGrid>

希望这能让你从正确的方向开始。

这正是我需要的。非常感谢。