Мне нужно включить следующее в моем приложении (приложение С# WPF):
- Иметь нормальный размер 1024*768
- Пользователь может развернуть приложение
- Пользователь может свернуть приложение
- Пользователь может восстановить приложение (1024*768)
- Пользователь не может вручную изменить размер приложения, перетащив его границу.
Нет ни одного ResizeMode
, удовлетворяющего всем этим требованиям. Есть ли способ сделать это?
2 ответа
Наконец-то я нашел относительно приличное решение.
Идея состоит в том, чтобы переопределить событие OnStateChanged
окна, отменить ограничения Min/Max и обновить его.
Если окно не развернуто, мы просто применяем обратно ограничения Min/Max.
protected override void OnStateChanged(EventArgs e)
{
if (WindowState == WindowState.Maximized)
{
MinWidth = 0;
MinHeight = 0;
MaxWidth = int.MaxValue;
MaxHeight = int.MaxValue;
if (!m_isDuringMaximizing)
{
m_isDuringMaximizing = true;
WindowState = WindowState.Normal;
WindowState = WindowState.Maximized;
m_isDuringMaximizing = false;
}
}
else if (!m_isDuringMaximizing)
{
MinWidth = 1024;
MinHeight = 768;
MaxWidth = 1024;
MaxHeight = 768;
}
base.OnStateChanged(e);
}
m_isDuringMaximizing
?
m_isDuringMaximizing
— это логическое поле, которое предотвращает зацикливание метода при изменении состояния изнутри самого себя.
Вы можете прослушать событие Window.SizeChanged и внутри вашего обработчика вручную установить ширину и высоту обратно на 1027 и 768. Он по-прежнему позволяет пользователю перетаскивать края окна для изменения размера, но затем окно возвращается к установленному размеру. Недостаток этого в том, что окно «зависает» всякий раз, когда пользователь пытается изменить размер — не самое приятное зрелище. Минимизация и максимизация работают как обычно.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
Height="1024" Width="768" ResizeMode="CanMinimize"
, вы можете добиться всего, кроме пункта 2.