Кажется, у меня противоречивые требования.У меня есть DataGrid, который имеет флажок в качестве первого столбца.Пользователи хотят, чтобы флажок выбирался одним щелчком, а не двойным щелчком.Я смог добиться этого, используя DataGridTemplateColumn и флажок, подобный следующему:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Пользователь также имеет элемент управления, который позволяет им указывать строку (может быть сотни строк).Если они указывают строку, которая не отображается, я хочу, чтобы она прокручивалась в поле зрения.Я скомпрометировал и добавил обработчик событий в коде для события DataGrid_SelectionChanged.Первоначально я просто использовал команду ScrollIntoView, но закадровые строки выделялись, но сетка не прокручивала их в поле зрения.Затем я смог добавить команду «Фокус» и строка прокручивалась в поле зрения.Итак, теперь обработчик событий выглядит следующим образом:
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DataGrid dg = (DataGrid)sender;
if (dg.SelectedItem == null) return;
dg.ScrollIntoView(dg.SelectedItem);
dg.SelectedItem.Focus();
}
Теперь я возвращаюсь к исходной проблеме, строка прокручивается в поле зрения, но для проверки флажка в любой другой строке (что вы не перемещаетесь вчерез контроль перехода к строке) вы должны нажать дважды.Кто-нибудь знает, что заставляет строки, перемещаемые вручную, требовать двойного щелчка?