Я портирую приложение из WinRT в UWP. (Я уже перенес его на iOS и Android)
Мое приложение имеет несколько страниц. Мне нужно иметь возможность определить, какая страница просматривается в данный момент, а затем обновить содержимое. (По разным причинам DataBinding не является опцией.)
У меня есть подпрограмма, которая запускается в фоновом режиме (не в потоке пользовательского интерфейса), вызывается из таймера отправки.
В WinRT Я обработал это следующим образом:
// If current window is MainPage, then update the displayed fields
var _Frame = Window.Current.Content as Frame;
Page _Page = _Frame.Content as Page;
if (_Page is MainPage)
{
MainPage _XPage = _Frame.Content as MainPage;
_XPage.SetFieldsTick(spoton);
}
Поскольку UWP возвращает значение NULL для Windows .Current.Content, я установил флаги в процедуре навигации, чтобы отслеживать текущий вид. Я бы хотел исправить этот kludge правильно.
Следующий шаг - как на самом деле изменить поля.
У меня есть подпрограмма в коде XAML, которая устанавливает поля
public void SetFieldsTick(bool spot)
{
UTC_Data.Text = Vars.DateStrZ;
}
Если я хочу сослаться на это из своей фоновой подпрограммы, тогда подпрограмма должна быть stati c. Если я внесу это изменение, то подпрограмма не сможет ссылаться на поля на странице, так как они не уста- новлены c.
Я знаю, что это, вероятно, что-то очевидное, но я в замешательстве.
Заранее спасибо.