您的位置:首页 > 其它

wpf如何实现自定义窗口自由拖动

2015-07-14 23:13 501 查看
我是一个新手,也是第一次写博客,有什么不好的还请大家指教,只为记录一下自己学习的东西

话不多说了。

今天碰到一个Wpf的窗口让鼠标按下可以拖动,本来想想很简单的,调用一下this.DragMove()就可以了,可是后来发现自己的窗口还是不能动,想了半天也没有发现问题,后来跟了一下,发现窗口移动的事件就没有触发。

之后看看前台的代码发现了一个问题,就是鼠标点击的时候自己接收的地方没有定义好。就是Border标签里面的地方自己放在第一行之中了,可是大小却与第一行分配的不一样,所以就出现偶时能拖,有时不能拖的现像,后画把它放在Grid这个标签里面就好了。

下面是修改前的前台代码:

[code]<Window x:Class="Demo_01.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"  WindowStartupLocation="CenterScreen" WindowStyle="None" Background="LightBlue">
    <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>
</Window>


修改后的就是注释的地方。

这是后台的代码:

[code] public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.Border_Title.MouseDown += new MouseButtonEventHandler(Border_Title_MouseDown);
        }

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


我是一个新手,大家要是还有其它的办法,可以告诉我一下,谢谢了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: