У меня есть окно WPF с набором MaxWidth, поэтому, когда я нажимаю кнопку Maximize, он максимизируется вертикально, но не горизонтально. Это ожидаемое поведение. Тем не менее, окно всегда подключается к левой стороне экрана (Windows 7, если это имеет значение), и я хочу, чтобы он был центрирован по горизонтали, когда был Максимизирован. Я попытался добавить обработчик событий следующего StateChanged
, но это, кажется, не делать ничего:горизонтально центр вертикально максимизированного окна WPF
private void wdw_mainWindow_StateChanged(object sender, EventArgs e)
{
switch (WindowState)
{
case WindowState.Maximized:
var windowWidth = (double)GetValue(WidthProperty);
Left = (SystemParameters.PrimaryScreenWidth/2) - (windowWidth/2);
break;
}
}
я поставил точку останова на switch
заявлении и этот код определенно получает удар, когда я нажал на кнопку Maximize в моем приложении. Однако даже после установки Left
окно остается прочно застрявшим в левой части экрана. Что происходит?
Хм, это заставляет меня беспокоиться о том, что если пользователь должен был изменить местоположение, мое приложение будет спорить с ними и поп-обратно в другое место. –
Итак, запишите два события, например, в Rx.net. –