2017-02-16 1 views
-2

행을 재정렬 할 수 있습니다. Mac에서 NSTableView의 한 인덱스 위치에서 다른 인덱스 위치로 드래그 앤 드롭 할 수 있지만 아무 것도 얻을 수 없습니다. 행을 드래그 앤 드롭하는 동안 효과. 행의 순서가 바뀌는 느낌을주기 위해 스타일을 어떻게 설정할 수 있습니까? 즉, 1.WriteRows 2.ValidateDrop 3.AcceptDrop과 같은 재정렬 행에 대해 TableViewDataSource에서 세 가지 재정의 메소드를 사용하고 있습니다. 미리 감사드립니다.Xamarin.Mac의 NSTableView에서 행을 드래그 앤 드롭하는 동안 애니메이션 효과를 설정할 수있는 방법

답변

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; 
} 
관련 문제