WPF 实现控件自定义摆放

        做这个的时候,我主要考虑窗口放大缩小,控件也要放大缩小,所以要用到比例来分配宽高。

        后面就想到了用Grid来制作,3x3的规格,控件放在中间,而放大缩小就GridSplitter来实现,总而言之,拖拉和放大缩小都是通过修改ColumnDefinition的宽度和RowDefinition的高度。

通过GridSplitter的LostMouseCapture事件,可以更新放大缩小后的比列

Private void GridSplitter_LostMouseCapture(object sender, MouseEventArgs e)
{
    Grid grid = (sender as GridSplitter).Parent as Grid;
    //这里可以保存你的宽高。(因为行列我没有通过双向绑定,所以需要自己更新一下)
}

至于拖拉,则通过MouseLeftButtonDown, MouseMove,MouseUp来实现,这个大同小异,大家可以搜相关拖拉都可以找到相似例子,这里就不做介绍,而我这里是使用Preview,控件列表和显示部分,然后通过遍历去判断点击的是谁,再找到相关的控件,执行拖拉。

也可以将控件都继承Thumb,是用DragDelta和DragCompleted的方式实现拖拉。(推荐这种,不需要计算鼠标移动多少)

实现并不难,绑定数据则根据自己项目需求了,我这边是在ViewModel里面将数据统一管理,至于用户拖出来控件需要绑定哪些属性,通过命令的形式传到ViewModel层里,再关联起来。

发布了4 篇原创文章 · 获赞 0 · 访问量 1179
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览