2017-01-22 3 views
1

Короче говоря, я попытался запустить этот конкретный кодПротиворечивые TitleBar Высота возвращает

CoreApplicationViewTitleBar coreTitleBar = CoreApplication.GetCurrentView().TitleBar; 
coreTitleBar.ExtendViewIntoTitleBar = true; 
dragarea.Height = coreTitleBar.Height; 
HamBut.Margin = new Thickness(0, dragarea.Height, 0, 0); 
Window.Current.SetTitleBar(dragarea); 

Когда я запускаю его в первый раз, coreTitleBar.Height возвращается 32. Но, когда я пытался повторно запустить его, он возвращает 0.

Предполагается, что это ошибка, или я делаю это неправильно?

В настоящее время используется Visual Studio 2017 RC.

+0

Я проверяю его, что он всегда возвращает 0. Если я не нажму кнопку «Свернуть» или значок на панели задач, он вернется 32. –

+0

Странно. У меня также был приятный результат, как у вас. Опять же, это не должно быть так. –

ответ

0

Это зависит от того, когда код запущен, и да, UWP не очень последователен.

Что такое the docs don't explicitly mention, так это то, что вам нужно подписаться на событие coreTitleBar.LayoutMetricsChanged, а затем обновить высоту в обратном вызове. Это будет учитывать ситуации, когда размер строки заголовка по какой-то причине изменился.

coreTitleBar.LayoutMetricsChanged += delegate 
{ 
    dragarea.Height = coreTitleBar.Height; 
    HamBut.Margin = new Thickness(0, dragarea.Height, 0, 0); 
}; 

И это также устраняет проблему «но это ноль».