WPF中如何实现窗口的拖拽停靠

Arthas5 2017-02-23 04:19:53
以VS的界面为例,鼠标拖动窗口中MainWindows.xmal的标签,移动到鼠标停下来的地方,MainWindows.xmal的窗口就会停在那里。
我想知道这个功能是如何实现的。谢谢各位。
...全文
1580 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_34267702 2017-03-16
  • 打赏
  • 举报
回复
引用 5 楼 xuzzzhen123 的回复:
[quote=引用 4 楼 duanzi_peng 的回复:] [quote=引用 3 楼 Arthas5 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 看这里:https://www.codeproject.com/articles/18812/wpf-docking-library
我下载了这个里面的源代码,不能运行,是不是这个源代码的版本太老了,我看是07年发布的,现在.net都4.6了[/quote] 并不一定非得要运行,使用里边的DockingLibrary这个dll文件就行了,按着它的代码测试。[/quote] 实测有效,谢谢版主推荐。 有个小问题,就是主窗体关闭后,程序不能自动退出。我目前是在主窗体的Closed事件中代码关闭子窗体。建议其他的网友修改DockLibrary库来实现自动关闭。[/quote] 简单重写下 把你的那个close直接加进去 不过可能就成了定制 而不是common了
天外怪魔 2017-03-10
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
[quote=引用 3 楼 Arthas5 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 看这里:https://www.codeproject.com/articles/18812/wpf-docking-library
我下载了这个里面的源代码,不能运行,是不是这个源代码的版本太老了,我看是07年发布的,现在.net都4.6了[/quote] 并不一定非得要运行,使用里边的DockingLibrary这个dll文件就行了,按着它的代码测试。[/quote] 实测有效,谢谢版主推荐。 有个小问题,就是主窗体关闭后,程序不能自动退出。我目前是在主窗体的Closed事件中代码关闭子窗体。建议其他的网友修改DockLibrary库来实现自动关闭。
  • 打赏
  • 举报
回复
引用 3 楼 Arthas5 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 看这里:https://www.codeproject.com/articles/18812/wpf-docking-library
我下载了这个里面的源代码,不能运行,是不是这个源代码的版本太老了,我看是07年发布的,现在.net都4.6了[/quote] 并不一定非得要运行,使用里边的DockingLibrary这个dll文件就行了,按着它的代码测试。
Arthas5 2017-02-27
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
看这里:https://www.codeproject.com/articles/18812/wpf-docking-library
我下载了这个里面的源代码,不能运行,是不是这个源代码的版本太老了,我看是07年发布的,现在.net都4.6了
浪子-无悔 2017-02-24
  • 打赏
  • 举报
回复

  <StackPanel >
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="40"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>
            <Border x:Name="Border_Title" Grid.Row="0" Height="40" Width="525" Background="LightBlue" BorderThickness="0,0,0,1" BorderBrush="Black"></Border>
        </Grid>
        <!--<Border x:Name="Border_Title" Grid.Row="0" Height="40" Width="525" Background="LightBlue" BorderThickness="0,0,0,1" BorderBrush="Black"></Border>-->
    </StackPanel>
通过Border的鼠标按下事件,调用 this.DragMove(); 方法即可
 public MainWindow()
        {
            InitializeComponent();

            this.Border_Title.MouseDown += new MouseButtonEventHandler(Border_Title_MouseDown);
        }

        void Border_Title_MouseDown(object sender, MouseButtonEventArgs e)
        {
            this.DragMove();
        }

8,756

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧