2009-11-19 18 views

Odpowiedz

4

W naszej aplikacji mamy Windows z WindowStyle ustawionym na "none", zaimplementowaliśmy funkcjonalność przeciągania okna, ale tylko z nagłówka, a nie z dowolnego punktu w oknie. Zrobiliśmy to, dodając obramowanie jako nagłówek, a następnie dodając kciuk, aby wypełnić całą ramkę. Następnie posługujemy się metodą DragDelta na kciuku w kodzie za Windowsem.

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

Następnie w kodzie opóźnieniem mamy następujące obsługi zdarzeń ...

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

Nie wiem, czy to jest lepiej niż inne metody, to po prostu sposób, w jaki zrobił to.

43

Używam okna głównego do przechowywania stron (tworzenie programu styl nawigacji), a w kodzie za mojego okna głównego, wprowadziłem ten ...

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

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

... i to działa jak urok. Jest to z windowstyle = none. To miłe w tym sensie, że można kliknąć w dowolnym miejscu na aplikacji i przenieść go, zamiast po prostu ogranicza się do górnego paska.

2

zarówno wewnątrz okna w funkcji obciążenia lub wewnątrz sieci jest na funkcji obciążenia użyć deligate wywołać metodę DragMove() na myszy kliknij

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

Zamiast MouseDown należy użyć MouseLeftButtonDown, jak można wywołać tylko DragMove, gdy główny przycisk myszy jest wyłączony. –

+0

@ DušanKnežević Tak, to prawda! Wskoczyłem z rozwiązaniem, aby dać mu szybki bieg. –

Powiązane problemy