代码之家  ›  专栏  ›  技术社区  ›  Ortund

在WPF中选择数据网格中的行时,如何勾选复选框列

  •  0
  • Ortund  · 技术社区  · 7 年前

    我的DataGrid列出了保存在数据库中的联系人:

    <DataGrid ItemsSource="{Binding ContactsView}"
                Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2"
                x:Name="contactsDataGrid" AutoGenerateColumns="False"
                EnableRowVirtualization="True" Padding="10"
                CanUserAddRows="False"
                RowDetailsVisibilityMode="VisibleWhenSelected"
                SelectionChanged="contactsDataGrid_SelectionChanged">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn Header="Select" Width="50" />
            <DataGridTextColumn Binding="{Binding Salutation}" Header="Salut." />
            <DataGridTextColumn Binding="{Binding FirstName}" Header="First Name" />
            <DataGridTextColumn Binding="{Binding LastName}" Header="Last Name" />
            <DataGridTextColumn Binding="{Binding EmailAddress}" Header="Email Address" />
            <DataGridTextColumn Binding="{Binding Mobile}" Header="Mobile Number" />
            <DataGridTextColumn Binding="{Binding BroadDesignation}" Header="Broad Designation" />
            <DataGridTextColumn Binding="{Binding Designation}" Header="Designation" />
        </DataGrid.Columns>
    </DataGrid>
    

    用户应该通过单击来选择一行。选择后,联系人将添加到另一个列表中,稍后使用:

    private List<Contact> SelectedContacts = new List<Contact>();
    private void contactsDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        DataGrid ThisGrid = (DataGrid)sender;            
        Contact SelectedContact = (Contact)ThisGrid.SelectedItem;
    
        if (!SelectedContacts.Contains(SelectedContact))
            SelectedContacts.Add(SelectedContact);
    }
    

    我如何使它在用户进行选择时 CheckBoxColumn 更改为选中复选框的状态,以便用户知道他们已经选择了该行?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Ben    7 年前

    IsSelected .在 SelectionChanged

    private void contactsDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        DataGrid ThisGrid = (DataGrid)sender;            
        Contact SelectedContact = (Contact)ThisGrid.SelectedItem;
        SelectedContact.IsSelected = true;
        contactsDataGrid.Items.Refresh();
    
        if (!SelectedContacts.Contains(SelectedContact))
            SelectedContacts.Add(SelectedContact);
    }