#.net #wpf #.net-4.0
#.net #wpf #.net-4.0
Вопрос:
У нас есть проект WPF, разработанный с .NET 3.5, который мы преобразовали в .NET 4, чтобы воспользоваться новыми функциями, но наше главное окно top
и left
свойства получают другие результаты, чем в .NET 3.5
В 3.5: top
считывает -7, в 4.0: считывает 0 (при запуске приложения)
но, если мы запустим следующий код, он будет считываться нормально, как и раньше:
(this as Window).WindowState = System.Windows.WindowState.Normal;
(this as Window).WindowState = System.Windows.WindowState.Maximized;
Ответ №1:
Ну, я полагаю, вы имеете в виду развернутое окно. Если вы развернете окно, граница будет находиться за пределами обычных границ экрана и, следовательно, вверху и слева будут отрицательные значения. Возможно, .NET 4 изменил это значение на ноль, даже если оно максимизировано, в то время как .NET 3.5 этого не делает.
— SeriTools
Комментарии:
1. как я уже говорил, после того, как мы выполним код: (это как окно). WindowState = System. Windows. WindowState. Нормально; (это как окно). WindowState = System. Windows. WindowState.Maximized; окно будет развернуто, а затем top снова считывает -7, как это было в .NET 3.5 если вы правы, то он будет продолжать считывать ноль даже после выполнения приведенного выше кода!
2. Что ж, тогда я рекомендую вам использовать WinAPI для получения этих значений. Он всегда будет возвращать толщину границы (в данном случае -7) в случае развернутых окон. 😉