Я создаю POS-приложение, и я хочу, чтобы конечный пользователь мог иметь возможность переключения режима выбора для datagrid, т.е. они могут щелкнуть по нескольким строкам, и каждый выбранный элемент будет накапливаться в свойстве SelectedItems - также щелчок по уже выбранной строке снимет выделение строки. Я нашел этот код в другом вопросе о переполнении стека:
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="DoCheckRow" />
</Style>
</DataGrid.Resources>
public void DoCheckRow(object sender, MouseButtonEventArgs e)
{
DataGridCell cell = sender as DataGridCell;
if (cell != null && !cell.IsEditing)
{
DataGridRow row = VisualHelpers.TryFindParent<DataGridRow>(cell);
if (row != null)
{
row.IsSelected = !row.IsSelected;
e.Handled = true;
Debug.WriteLine(sender);
}
}
}
Это фактически дает мне то, что я хочу, в том, что касается режима выбора переключения, однако, когда я добавляю кнопку в качестве CellTemplate, команда кнопок не запускается при нажатии, потому что я устанавливаю e.Handled = true;
в приведенном выше коде, который останавливает всплывающее окно событий . Могу ли я совместить и то, и другое?