У меня есть проект Unity, который я экспортирую для добавления наложений XAML, и недавно использовал единство display.Activate () для создания второго окна, но мне нужно получить окно для этого второго представления, чтобы установить содержимое XAML. После запуска программы я запускаю следующий код в потоке пользовательского интерфейса основного представления:
var views = CoreApplication.Views;
Logger.Log(this, "using view count: " + views.Count);
for (int i = 0; i < views.Count; i++)
{
int index = i;
if (views[index] != CoreApplication.MainView)
{
try
{
Logger.Log(this, "fetching window for view " + index);
await views[index].Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
if (Window.Current == null) Logger.Log(this, "window is null");
else Logger.Log(this, "window was found");
});
}
catch (Exception e)
{
Logger.Log(this, "exception thrown fetching window: "+ e.Message);
}
break;
}
}
И он всегда сообщает, что «окно равно нулю». Создание нового Frame () в RunAsyn c также вызывает исключение, что интерфейс был упорядочен для другого потока, что также указывает на то, что RunAsyn c () не запускается в соответствующем потоке пользовательского интерфейса.
В конечном итоге мне нужно установить содержимое XAML второго представления, и у меня возникают проблемы с выяснением, как для этого получить доступ к окну, и я чувствую, что, должно быть, неправильно понимаю что-то фундаментальное о RunAsyn c, поскольку примеры представлений i ' Мы видели, что они могут свободно создавать в нем фреймы, извлекать windows и назначать контент, но в этом случае это не удается.