Как отключить любое взаимодействие со строкой DataGrid
подскажите, пожалуйста, как отключить любое взаимодействие со строкой DataGrid если для нее установлено IsEnabled = false, кроме наведения мыши для показа подсказки?
Если я просто устанавливаю IsEnabled = false строка продолжает выбираться при нажатии ПКМ. но при этом IsHitTestVisible = false не подходит, так как он блокирует абсолютное любое взаимодействие со строкой и подсказка перестает показываться.
Пробовал вот так добавить поведение, но не срабатывает
public class DataGridRowDisabledInteractionBehavior : Behavior<DataGrid>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.AddHandler(DataGridRow.PreviewMouseRightButtonDownEvent, (RoutedEventHandler)OnPreviewMouseDown);
}
protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.RemoveHandler(DataGridRow.PreviewMouseRightButtonDownEvent, (RoutedEventHandler)OnPreviewMouseDown);
}
private void OnPreviewMouseDown(object sender, RoutedEventArgs e)
{
var item = (e.OriginalSource as DataGridRow)?.DataContext;
if (item is TableRowObject row && row.IsEnabled == false)
e.Handled = true;
}
}
Примерно чего хочу добиться: в таблице показываются пользователю несколько строк. чтобы пользователь выбрал нужную ему и продолжил работу с ней. по определенным критериям некоторые строки не должны быть доступны пользователю для выбора, но при наведении на них должны быть подсказка (нельзя выбрать - причина). И у меня есть кнопка, которая становится активной, только тогда когда пользователь выбрал какую-то строку. Но если нажать ПКМ, то даже не активная строка IsEnabled = false выбирается и кнопка становится некорректно активной