У меня есть окно с кастомным Window Chrome сделаном на Grid которая обрабатывает два события:
private void OnTitleBarMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) {
switch(e.LeftButton) {
case MouseButtonState.Pressed: {
this.DragMove();
break;
}
}
}
private void OnTitleBarMouseMove(object sender, System.Windows.Input.MouseEventArgs e) {
switch(e.LeftButton) {
case MouseButtonState.Pressed: {
var point = this.PointToScreen(e.MouseDevice.GetPosition(this));
this.Left = point.X - (this.RestoreBounds.Width * 0.55);
this.Top = point.Y - 20;
this.WindowState = WindowState.Normal;
this.DragMove();
break;
}
}
}
и получается если вне окна зажать ЛКМ е вести на TitleBar окна оно начнет DragMove
как сделать чтобы окно двигалось только тогда когда оно в фокусе?
Вот такой минимальный код работает у меня:
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="None" Width="300" Height="200">
<Grid>
<Grid Background="Blue" VerticalAlignment="Top" MouseLeftButtonDown="Grid_MouseLeftButtonDown">
<TextBlock Text="Header" Foreground="Yellow" FontWeight="Bold"/>
</Grid>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DragMove();
}
}
Ничего дополнительно писать не требуется
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости