Исходный код был
private void SetVerticalOffSet()
{
Popup ParentPopup = this.Parent as Popup;
if (ParentPopup == null)
return;
double ActualVerticalOffset = ParentPopup.VerticalOffset;
double ActualHorizontalOffset = ParentPopup.HorizontalOffset;
double NewVerticalOffset = (Window.Current.Bounds.Height - DecryptionDialog_MainGrid.ActualHeight)/2;
double NewHorizontalOffset = (Window.Current.Bounds.Width - DecryptionDialog_MainGrid.ActualWidth)/2;
if (ActualVerticalOffset != NewVerticalOffset || ActualHorizontalOffset != NewHorizontalOffset)
{
ParentPopup.VerticalOffset = NewVerticalOffset;
ParentPopup.HorizontalOffset = NewHorizontalOffset;
}
}
Он вызывается каждый раз, когда макет был обновлен.
Условный блок вызвал бесконечный цикл в качестве ActualVerticalOffSet & ActualHorizontalOffSet хранится меняется в ОС Windows 10. (в 10-м положении десятичной)
if (ActualVerticalOffset != NewVerticalOffset || ActualHorizontalOffset != NewHorizontalOffset)
{
ParentPopup.VerticalOffset = NewVerticalOffset;
ParentPopup.HorizontalOffset = NewHorizontalOffset;
}
Ориентировочное Решение Это исправление
if (Math.Round(ActualVerticalOffset) != Math.Round(NewVerticalOffset) || Math.Round(ActualHorizontalOffset) != Math.Round(NewHorizontalOffset))
{
ParentPopup.VerticalOffset = NewVerticalOffset;
ParentPopup.HorizontalOffset = NewHorizontalOffset;
}
До появления Microsoft
Взгляните на раздел замечаний этой [ссылки MSDN] (https://msdn.microsoft.com/en-us/library/windows/apps/ windows.ui.xaml.layoutcycleexception.aspx), чтобы узнать, дает ли он вам какие-либо идеи. –
@MarkHall Мне удалось идентифицировать проблему. Я пытался установить New Vertical & Horizontal Offset. Значения, по-видимому, меняются сами по себе, заставляя обновленный макет находиться в бесконечном цикле. –