2009-11-19 9 views

ответ

4

В нашем приложении у Windows с WindowStyle установлено значение «none», мы реализовали функцию перетаскивания окна, но только из заголовка, а не из любой точки окна. Мы сделали это, добавив Border в качестве заголовка, а затем добавив Thumb для заполнения всей границы. Затем мы обрабатываем метод DragDelta на Thumb в коде для окна.

<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> 

Затем в коде, за нами следующий обработчик события ...

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

Я не знаю, если это лучше, чем любой другой метод, это именно так, как мы это делали Это.

43

Я использую главное окно для хранения страниц (создание программы навигации стиля), а в коде позади моего главного окна, я вставил это ...

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

    // Begin dragging the window 
    this.DragMove(); 
} 

... и это работает Как колдовство. Это с windowstyle = none. Его приятно в том смысле, что вы можете щелкнуть в любом месте приложения и перемещать его, а не ограничиваться только верхним баром.

2

либо внутри окна на функцию нагрузки или внутри сетки находится на функции нагрузки использовать deligate, чтобы вызвать метод DragMove() на Mouse Click

private void Grid_Loaded(object sender, RoutedEventArgs e) 
{ 
      this.MouseLeftButtonDown += delegate{DragMove();}; 
} 
+0

Вместо MouseDown вы должны использовать MouseLeftButtonDown, как вы можете только позвонить DragMove, когда основная кнопка мыши выключена. –

+0

@ DušanKnežević да, это правда! Я вскочил с решением, чтобы дать ему быстрый ход. –

Смежные вопросы