Я хочу установить ширину/высоту Window
динамически на основе максимальной ширины/высоты пользовательских экранов. Как я могу определить это программно.
Как определить ширину/высоту экрана с помощью С#
Ответ 1
Для основного экрана:
System.Windows.SystemParameters.PrimaryScreenWidth
System.Windows.SystemParameters.PrimaryScreenHeight
(Обратите внимание, что есть также некоторые другие свойства, связанные с основным экраном, которые зависят от различных факторов: Full*
и Maximised*
)
Виртуальный экран:
SystemParameters.VirtualScreenWidth
SystemParameters.VirtualScreenHeight
Ответ 2
Если вам нужны конкретные размеры монитора, на котором работает ваша программа (если у кого-то работает более одного монитора), вы также можете использовать:
var helper = new WindowInteropHelper(this); //this being the wpf form
var currentScreen = Screen.FromHandle(helper.Handle);
Это вернет объект экрана, ссылающийся на монитор, на котором работает программа. Оттуда вы можете использовать свойство currentScreen.Bounds.Width
/Height
(для полного размера) или currentScreen.WorkingArea.Width
/Height
(минус панель задач и т.д.) В зависимости от того, что вы хотите.
Ответ 3
использовать экранный объект
Screen.PrimaryScreen.Bounds.Width
Ответ 4
Вы можете использовать событие SizeChanged
SizeChanged="MyWindow_SizeChanged"
Затем в вашем обработчике событий
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (this.MinWidth > 0 && this.MinHeight > 0)
{
double HeightScaleFactor, WidthScaleFactor;
HeightScaleFactor = e.NewSize.Height / this.MinHeight;
WidthScaleFactor = e.NewSize.Width / this.MinWidth;
mainGrid.LayoutTransform = new ScaleTransform(HeightScaleFactor, WidthScaleFactor);
}
}
Где MainGrid является контейнером для всего содержимого в MyWindow
Ответ 5
Думаю, вам нужно либо PrimaryMonitor, либо VirtualScreen