У меня конфликт между двумя функциями, которые мне нужны в моей DataGrid. Определение DataGrid выглядит следующим образом:
<DataGrid x:Name="dgSalesOrders" IsReadOnly="True" SelectionMode="Single" SelectionUnit="FullRow" PreviewMouseLeftButtonDown="dgSalesOrders_PreviewMouseLeftButtonDown">
<DataGrid.Columns>
<DataGridHyperlinkColumn Header="Order #" Binding="{Binding SalesOrderNumber}" IsReadOnly="True">
<DataGridHyperlinkColumn.ElementStyle>
<Style TargetType="TextBlock">
<EventSetter Event="Hyperlink.Click" Handler="colOrderNumber_Click"/>
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
</DataGrid.Columns>
</DataGrid>
dgSalesOrders_PreviewMouseLeftButtonDown
выглядит следующим образом:
private void dgSalesOrders_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
prevRowIndex = getDataGridItemCurrentRowIndex(e.GetPosition, dgSalesOrders);
if (prevRowIndex < 0 || dgSalesOrders.SelectedItems.Count == 0)
return;
dgSalesOrders.SelectedIndex = prevRowIndex;
List<SalesOrder> selectedOrders = new List<SalesOrder>();
foreach (ThinSalesOrder salesOrder in dgSalesOrders.SelectedItems)
selectedOrders.Add(salesOrder);
ThinSalesOrder selectedOrder = (ThinSalesOrder)dgSalesOrders.Items[prevRowIndex];
if (selectedOrder == null)
return;
DataObject data = new DataObject(salesOrdersFormat, selectedOrders.ToArray());
if (DragDrop.DoDragDrop(dgSalesOrders, data, DragDropEffects.Move) != DragDropEffects.None)
dgSalesOrders.SelectedItem = selectedOrder;
}//dgSalesOrders_PreviewMouseLeftButtonDown
Моя проблема в том, что событие щелчка гиперссылки (colOrderNumber_Click
) не срабатывает, если вызывается DragDrop.DoDragDrop(dgSalesOrders, data, DragDropEffects.Move)
.
Есть ли способ, которым этот метод подавляет событие нажатия? Если e.Handled
не установлен в значение true, почему colOrderNumber_Click
не срабатывает?