Bazen standart Windows uygulamaları (ToolBar, Menu, vb) yerine, Web tarzı, sayfa tabanlı uygulamalar tasarlamak daha anlamlı olmaktadır. WPF’in sağladığı sayfa tabanlı uygulama mimarisi, kompleks olmayan uygulamalar ve özellikle kolay dağıtılabilen uygulamalar (XBAP) geliştirilmek istendiğinde uygun bir tercihtir.
Sayfa tabanlı uygulama geliştirmek için Window yerine Page sınıfını kullanmak gerekir. Uygulamayı tasarlarken Page sınıfının “top level container” olduğunu görürsünüz.Ancak “runtime”da durum biraz farklıdır. “Runtime”da Page sınıfı aşağıdakilerden birinin içerisinde bulunabilir,
- NavigationWindow
- Bir Window içindeki Frame
- Bir Page içindeki Frame
- “Web Browser” içindeki Frame
“Designer”da “top level” kontrol olarak Page verdiğinizde WPF otomatik olarak bir NavigationWindow objesi oluşturur ve bu Page’i içerisine ekler. NavigationWindow Window sınıfını “inherit” eder.
Page sınıfı “ContentControl”den türememesine rağmen sadece bir adet content alabilir.
Sayfalar arasında ilerlemek için “HyperLink”ler kullanılabilir.
<TextBlock> 2. Sayfaya Git <Hyperlink NavigateUri="Sayfa2.xaml"> Git </Hyperlink> </TextBlock>
“NavigateUri” “property”sine bir web adresi yazarsanız, kliklendiğinde ilgili web sayfası görüntülenecektir.
Eğer “target page” “scrollable”sa, “ NavigateUri = "Sayfa.xaml#txtUserName" ” gibi bir ifade direkt olarak o “control”ü gösterecek şekilde sayfayı yükler.
“Page”leri “Frame” kontrolü içerisinde de yükleyebilirsiniz. Bu sayede bir “Window”un veya başka bir “Page”in içinde bir “Page” yükleyebilirsiniz.