[英]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.