尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

对Grid绑定移动

对Grid绑定移动
📅 发布时间:2026/6/19 19:16:43

在WPF中,一般移动在Window中写

this.DragMove();

但是这样可能会污染View的纯净性质,如果不喜欢这样的写法,可以自己扩展代码
1、使用Command在ViewModel绑定
2、使用方法在Grid中自定义完成
总体思路都是一样的
现在给出我的邪门写法
首先扩展下命令行为

public static class CommandBehavior
{public static readonly DependencyProperty CommandProperty = DependencyProperty.RegisterAttached("Command", typeof(ICommand), typeof(CommandBehavior), new PropertyMetadata(null, CommandPropertyChanged));public static readonly DependencyProperty ParameterProperty = DependencyProperty.RegisterAttached("Parameter", typeof(object), typeof(CommandBehavior), new PropertyMetadata(null));public static void SetParameter(UIElement element, object value){element.SetValue(ParameterProperty, value);}public static object GetParameter(UIElement element){return element.GetValue(ParameterProperty);}public static void SetCommand(UIElement element, ICommand value){element.SetValue(CommandProperty, value);}public static ICommand GetCommand(UIElement element){return (ICommand)element.GetValue(CommandProperty);}private static void CommandPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e){if (d is UIElement uIElement){if (e.NewValue is ICommand){uIElement.MouseLeftButtonDown += Element_MouseLeftButtonDown;}else{uIElement.MouseLeftButtonDown -= Element_MouseLeftButtonDown;}}}private static void Element_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){if (sender is UIElement element){ICommand command = GetCommand(element);if (command != null && command.CanExecute(null)){command.Execute(null);}}}
}

接着

 public class DragMoveHelper{public ICommand CreateDragMoveCommand(){return new TangdaoCommand(() =>Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.IsActive)?.DragMove());}}

这下我们可以使用ObjectDataProvider的MothedName

<ObjectDataProvider x:Key="drag"  MethodName="CreateDragMoveCommand" ObjectType="{x:Type local:DragMoveHelper}" />

对Grid进行静态绑定方法

<Grid Background="Transparent" behavior:CommandBehavior.Command="{Binding Source={StaticResource drag}}">

可以做到不需要污染View,不需要污染ViewModel,无伤静态写出控件移动

相关新闻

  • CCUT应用OJ题解——贪吃的松鼠
  • Java流程控制——Scanner进阶使用
  • 结对编程心得

最新新闻

  • 深入解析MC68HC908AZ32A指令集与SIM模块:从Opcode到系统协调
  • 从3天到10分钟:OpCore-Simplify如何让黑苹果配置变得简单高效
  • 2026寄大件怎么便宜?个人快递折扣渠道实测对比 - 快递物流资讯
  • Bili.UWP终极指南:Windows 11上最高效的B站客户端使用方案
  • 四款新开源图像生成模型硬核实测与选型指南
  • SAP PS 项目状态与字段选择:从权限控制到流程优化的实战配置

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号