2017-02-16 1 views
-2

行を並べ替えることができます。つまり、MacではNSTableViewの1つのインデックス位置から別のインデックス位置にドラッグアンドドロップできますが、行をドラッグアンドドロップしながらエフェクトを適用します。どのようにして行が並べ替えられているかを感じるためのスタイル設定をどうすればできますか?私は、並べ替えのためにTableViewDataSourceで3つのオーバーライドされたメソッドを使用しています。つまり、1.WriteRows 2.ValidateDrop 3.AcceptDrop。事前に感謝の意を表してください。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; 
} 
関連する問題