Сохранение состояния фокуса с помощью GetFocusedElement () не работает с пользовательскими элементами управления в элементе управления Panorama - PullRequest
0 голосов
/ 06 декабря 2010

Я пытаюсь использовать методику «наилучшей практики» использования

FocusManager.GetFocusedElement ()

в событии OnNavigatedFrom и

this.FindName

для нахождения сфокусированного элемента управления в событии OnNavigatedTo .

У меня есть страница Panorama, и внутри каждого PanoramaItem у меня есть пользовательский элемент управления, который, в свою очередь, имеет много элементов управления, таких как TextBox и т. Д.

GetFocusedElement действительно получает имя сфокусированного элемента управления в пользовательских элементах управления, но затем метод FindName не может найти его по возвращении! Возвращаемое имя не содержит никаких ссылок на сам пользовательский элемент управления, поэтому я предполагаю, что FindName не пересекает пользовательские элементы управления!

Я делаю что-то не так, или кто-нибудь знает способ легко улучшить это, или, по крайней мере, простую технику для хотя бы отображения или навигации по последнему элементу PanoramaItem, который отображался до деактивации приложения?

1 Ответ

1 голос
/ 06 декабря 2010

Чтобы установить выбранный элемент панорамы при навигации по странице, используйте свойство DefaultItem.

Чтобы определить, что это должно быть, сохраните SelectedItem при переходе от страницы.

Вы должны делать это на уровне страницы и получать доступ к свойствам панорамы.В элементах управления, размещенных в PanoramaItem, не нужно ничего делать, независимо от того, являются ли они пользовательскими или нет.

Если вы хотите избежать побочных эффектов, связанных с изменением defaultItem, вы можете взглянутьhttp://blogs.ugidotnet.org/corrado/archive/2010/09/27/smartpanorama-a-panorama-control-extension.aspx

...