Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как использовать привязку навигации и данных в приложении WinUI 3 с помощью XAML и C#.
В этом руководстве вы узнаете, как:
- Включите
NavigationCacheMode, чтобы сохранять тот же экземплярPageпри навигации. - Реализуйте интерфейс
INotifyPropertyChanged, чтобы уведомить механизм привязки данных о том, что данные были обновлены. - Передайте объекты между страницами при переходе.
В этом руководстве улучшен пример приложения с заметками WinUI из руководства по созданию приложения заметок WinUI 3 . Если вы выполнили это руководство, вы можете продолжить работу с тем же кодом. Кроме того, вы можете скачать полный код для этого руководства из репозитория GitHub и использовать его в качестве отправной точки для этого руководства.
В любом случае вы должны ознакомиться с понятиями, представленными и кодом, созданным в руководстве по созданию приложения заметок WinUI 3 .
Tip
Вы также можете скачать или просмотреть завершенный код для этого руководства из репозитория GitHub в WinUI Notes, часть 2. Чтобы увидеть различия между начальным и конечным состоянием проекта, см. этот коммит: обновления для части 2.
Background
Чтобы обеспечить простоту и введение некоторых базовых концепций, учебник по созданию приложения WinUI 3 с заметками ориентирован на простоту над эффективностью. Таким образом, пока приложение работает, есть некоторые вещи, которые можно улучшить.
Основная проблема связана с навигацией между страницами в приложении. По умолчанию экземпляры страницы не сохраняются при навигации, поэтому при каждом переходе к объекту Pageсоздается новый экземпляр. В приложении WinUI Notes объект notesModel создается в конструкторе AllNotesPage и заполняется при чтении всех заметок из файловой системы.
public sealed partial class AllNotesPage : Page
{
private AllNotes notesModel = new AllNotes();
...
}
Каждый раз, когда вы переходите от NotePage обратно к AllNotesPage, notesModel создаётся заново, и все заметки заново считываются из файловой системы. Эта неэффективность обычно не заметно в небольшом примере приложения без большого объема данных, но это было бы неприемлемо, например, приложение фотографий, которое считывало тысячи больших изображений из файловой системы.
Чтобы устранить эту проблему, в этом руководстве описаны следующие действия.
- Во-первых, убедитесь, что экземпляр
Pageкэшируется, чтобы при переходе он использовался повторно и не создавался заново. - Обновите класс
Noteтаким образом, чтобы привязанные свойства получали уведомление при любых изменениях текста заметки. - Убедитесь, что
notesModelкорректно обновляется при сохранении или удалении заметок, так как он не пересоздается при каждом переходе.
Tip
Вы будете часто обращаться к справочным документам по API и концептуальным документам при создании приложений для Windows. В этом руководстве вы увидите ссылки в тексте и в группах, помеченных как "Подробнее в документации:". Эти ссылки являются необязательными; Вам не нужно следовать им, чтобы завершить работу с руководством. Они предоставляются, если вы захотите отметить, где можно найти информацию, которая будет нужна вам, когда вы начнете создавать собственные приложения.
Windows developer