【发布时间】:2019-05-30 14:06:13
【问题描述】:
我在 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
我的问题是,如果调用 DragDrop.DoDragDrop(dgSalesOrders, data, DragDropEffects.Move),超链接点击事件 (colOrderNumber_Click) 不会触发。
这个方法有什么方法可以压制点击事件吗?如果e.Handled 没有设置为true,为什么colOrderNumber_Click 不会触发?
【问题讨论】:
标签: wpf drag-and-drop wpfdatagrid