0
我有一個WPF數據網格,用戶可以在其中拖放各種行來重新排序它們。但是,我需要一個指示器來顯示行將被插入的位置。WPF datagrid拖放目標指標
我已經嘗試了各種各樣的'hacky'方法,包括檢測鼠標移動事件並在鼠標所在處插入空白指示器行。不幸的是,在拖動行時,似乎沒有任何鼠標移動事件被觸發。
我有一個WPF數據網格,用戶可以在其中拖放各種行來重新排序它們。但是,我需要一個指示器來顯示行將被插入的位置。WPF datagrid拖放目標指標
我已經嘗試了各種各樣的'hacky'方法,包括檢測鼠標移動事件並在鼠標所在處插入空白指示器行。不幸的是,在拖動行時,似乎沒有任何鼠標移動事件被觸發。
UIElement類提供了幾個可以使用的事件。 這些都是:
前兩個是一個你可以使用。
<DataGrid DragOver="MyGrid_DragOver"
DragEnter="MyGrid_DragEnter"
我不得不同時使用這兩個工具來進行拖放操作。 (你的DataGrid)
private void MyGrid_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
var dragSource = ...;
var data = ...;
DragDrop.DoDragDrop(dragSource, data, DragDropEffects.Move);
}
}
然後你的代碼在目標控制事件處理程序:
我的反應,此舉mouve事件開始拖動操作
private void MyGrid_DragOver(object sender, DragEventArgs e)
{
this.DragOver_DragEnter(sender, e);
}
private void MyGrid_DragEnter(object sender, DragEventArgs e)
{
this.DragOver_DragEnter(sender, e);
}
然後你ca n設置Effects
屬性格式給予視覺反饋給用戶:
private void DragOver_DragEnter(object sender, DragEventArgs e)
{
// code here to decide whether drag target is ok
e.Effects = DragDropEffects.None;
e.Effects = DragDropEffects.Move;
e.Effects = DragDropEffects.Copy;
e.Handled = true;
return;
}
退房MSDN上的這種反應太:Giving drag and drop feedback using DragEventArgs.Effect