简体   繁体   English

在WPF中的DataGrid中选择一行时如何打勾CheckBoxColumn

[英]How to tick a CheckBoxColumn when I select a row in a DataGrid in WPF

My DataGrid lists contacts saved in the database: 我的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>

The user should select a row by clicking on it. 用户应通过单击选择一行。 When a selection is made, the contact is added to another list which is used later: 进行选择后,该联系人将添加到另一个列表中,该列表稍后使用:

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);
}

How can I make it so that when the user makes a selection, the CheckBoxColumn changes to a state where the checkbox is checked so that the user knows they've already selected that row? 我该如何做,以便当用户进行选择时, CheckBoxColumn变为选中该复选框的状态,以便用户知道他们已经选择了该行?

I would add another Property to your class called IsSelected . 我会在您的类中添加另一个名为IsSelected In the SelectionChanged Method you just have to set the property to true and refresh the dataGrid. SelectionChanged方法中,您只需将属性设置为true并刷新dataGrid。

Something like the following (not tested): 类似于以下内容(未经测试):

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);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM