无法拖动和移动WPF表单

Jaw*_*ABU 17 wpf window drag

我设计了一个窗口样式=无的WPF表单.所以我看不到表单中的拖动条.如何使用WindowStyle = None属性移动表单?

小智 54

我正在使用一个主窗口来保存页面(创建导航样式程序),在我的主窗口后面的代码中,我插入了这个......

protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
    base.OnMouseLeftButtonDown(e);

    // Begin dragging the window
    this.DragMove();
}
Run Code Online (Sandbox Code Playgroud)

......它就像一个魅力.这是windowstyle = none.它的优点在于您可以点击应用程序的任何位置并移动它而不是仅限于顶部栏.

  • 正如你所说,“就像一个魅力”:) (2认同)

Joe*_*oey 7

看到这个问题.

基本上你使用Window.DragMove方法.


Tab*_*ool 6

在我们的应用程序中,我们将Windows的WindowStyle设置为“ none”,我们实现了拖动窗口的功能,但只能从标题而不是从窗口的任何点拖动窗口。为此,我们添加了一个Border作为标题,然后添加了一个Thumb来填充整个Border。然后,我们在Window后面的代码中处理Thumb上的DragDelta方法。

<Border 
        Name="headerBorder" 
        Width="Auto" 
        Height="50" 
        VerticalAlignment="Top"
        CornerRadius="5,5,0,0" 
        DockPanel.Dock="Top" 
        Background="{StaticResource BackgroundBrush}" 
        BorderThickness="1,1,1,1"
        BorderBrush="{StaticResource BorderBrush}">
        <Grid>
            <Thumb 
                x:Name="headerThumb" 
                Opacity="0" 
                Background="{x:Null}" 
                Foreground="{x:Null}" 
                DragDelta="headerThumb_DragDelta"/>
        </Grid>
    </Border>
Run Code Online (Sandbox Code Playgroud)

然后在代码背后,我们有以下事件处理程序...

private void headerThumb_DragDelta(object sender, DragDeltaEventArgs e)
{
    Left = Left + e.HorizontalChange;
    Top = Top + e.VerticalChange;
}
Run Code Online (Sandbox Code Playgroud)

我不知道这是否比其他方法更好,这只是我们做到的方式。