В нашем приложении Windows с WindowStyle, установленным на «none», мы реализовали функциональность для перетаскивания окна, но только из заголовка, а не из любой точки окна. Мы сделали это, добавив границу в качестве заголовка, а затем добавив большой палец, чтобы заполнить всю границу. Затем мы обрабатываем метод 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>
Тогда в коде есть следующий обработчик событий ...
private void headerThumb_DragDelta(object sender, DragDeltaEventArgs e)
{
Left = Left + e.HorizontalChange;
Top = Top + e.VerticalChange;
}
Я не знаю, лучше ли это, чем другой метод, просто так, как мы это сделали.