c# – 启动器如何确定拖动已结束?
发布时间:2020-12-15 22:21:39 所属栏目:百科 来源:网络整理
导读:我们假设以下情况: 控件(例如,按钮)具有附加行为以启用拖放操作 Button Content="test" i:Interaction.Behaviors SimpleDragBehavior/ /i:Interaction.Behaviors/Button 和SimpleDragBehavior public class SimpleDragBehavior: BehaviorButton{ protected
我们假设以下情况:
控件(例如,按钮)具有附加行为以启用拖放操作 <Button Content="test"> <i:Interaction.Behaviors> <SimpleDragBehavior/> </i:Interaction.Behaviors> </Button> 和SimpleDragBehavior public class SimpleDragBehavior: Behavior<Button> { protected override void OnAttached () { AssociatedObject.MouseLeftButtonDown += OnAssociatedObjectMouseLeftButtonDown; AssociatedObject.MouseLeftButtonUp += OnAssociatedObjectMouseLeftButtonUp; AssociatedObject.MouseMove += OnAssociatedObjectMouseMove; mouseIsDown = false; } private bool mouseIsDown; private void OnAssociatedObjectMouseMove (object sender,MouseEventArgs e) { if (mouseIsDown) { AssociatedObject.Background = new SolidColorBrush(Colors.Red); DragDrop.DoDragDrop((DependencyObject)sender,AssociatedObject.Content,DragDropEffects.Link); } } private void OnAssociatedObjectMouseLeftButtonUp (object sender,MouseButtonEventArgs e) { mouseIsDown = false; } private void OnAssociatedObjectMouseLeftButtonDown (object sender,MouseButtonEventArgs e) { mouseIsDown = true; } } 现在的任务是确定拖动何时结束,以恢复按钮的原始背景. 解决方法
DragDrop.DoDragDrop在完成拖放操作后返回.
是的,“启动拖放操作”令人困惑,因为它可以被读作“开始拖放并返回”: private void OnAssociatedObjectMouseMove (object sender,MouseEventArgs e) { if (mouseIsDown) { AssociatedObject.Background = new SolidColorBrush(Colors.Red); var effects = DragDrop.DoDragDrop((DependencyObject)sender,DragDropEffects.Link); // this line will be executed,when drag/drop will complete: AssociatedObject.Background = //restore color here; if (effects == DragDropEffects.None) { // nothing was dragged } else { // inspect operation result here } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |