Авалония сохраняет положение окна после изменения размераC#

Место общения программистов C#
Ответить
Anonymous
 Авалония сохраняет положение окна после изменения размера

Сообщение Anonymous »

Я хочу сохранить положение окна после изменения его размера. Например, как JPEGView обрабатывает изменение размера при изменении изображения.
В WPF это можно сделать с помощью этого кода:
protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
{
base.OnRenderSizeChanged(sizeInfo);

//Calculate half of the offset to move the window

if (sizeInfo.HeightChanged)
Top += (sizeInfo.PreviousSize.Height - sizeInfo.NewSize.Height) / 2;

if (sizeInfo.WidthChanged)
Left += (sizeInfo.PreviousSize.Width - sizeInfo.NewSize.Width) / 2;
}

Как бы вы сделали то же самое в AvaloniaUI?
Обновление:
Я пробовал подписаться на ClientSizeProperty.Changed, это просто принудительно центрирует окно на экране
ClientSizeProperty.Changed.Subscribe(
x =>
{
var newSize = new Size(
ClientSize.Width + (x.OldValue.Value.Width - x.NewValue.Value.Width) / 2,
ClientSize.Height + (x.OldValue.Value.Height - x.NewValue.Value.Height) / 2);
var rect = new PixelRect(
PixelPoint.Origin,
PixelSize.FromSize(newSize, scaling));
var screen = Screens.ScreenFromPoint(owner?.Position ?? Position);
if (screen != null)
{
Position = screen.WorkingArea.CenterRect(rect).Position;
}
});


Подробнее здесь: https://stackoverflow.com/questions/703 ... ter-resize
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»