2017-02-16 46 views
-2

我可以重新排序行即從一個索引位置拖放到NSTableView中的另一個索引位置在Mac中,但我無法獲得任何效果,同時拖放行。我如何設置任何樣式的感覺行是重新排序。我在TableViewDataSource中使用了三種重寫方法,用於重排行1.WriteRows 2.ValidateDrop 3.AcceptDrop。請提出任何想法,提前致謝。我怎樣才能設置動畫效果,同時拖放行在Xamarin.Mac中NSTableView.Mac

回答

0

您可以在AcceptDrop方法做一個UITableView.MoveRow並通過NSAnimationContext擴展行之間的視覺舉動持續時間:

注:這確實重新排序數據的數據源,如果保護用戶的新數據訂單是必需的,您將不得不手動重新排列數據,以便UITableView.ReloadData將顯示正確的訂單。

public override bool AcceptDrop(NSTableView tableView, NSDraggingInfo info, nint row, NSTableViewDropOperation dropOperation) 
{ 
    var rowData = info.DraggingPasteboard.GetDataForType(typeof(Product).FullName); 
    if (rowData == null) 
     return false; 
    var dataArray = NSKeyedUnarchiver.UnarchiveObject(rowData) as NSIndexSet; 

    NSAnimationContext.BeginGrouping(); 
    NSAnimationContext.CurrentContext.Duration = 1; 
    foreach (var originalIndex in dataArray.ToArray()) 
    { 
     tableView.MoveRow((nint)originalIndex, row); 
    } 
    NSAnimationContext.EndGrouping(); 

    return true; 
}