NavigationService.FragmentNavigation Olay
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İstenen parça geçerli içerikteyse veya istenen parça farklı içerikteyse kaynak XAML içeriği yüklendikten sonra bir içerik parçasına gezinti başladığında gerçekleşir.
public:
event System::Windows::Navigation::FragmentNavigationEventHandler ^ FragmentNavigation;
public event System.Windows.Navigation.FragmentNavigationEventHandler FragmentNavigation;
member this.FragmentNavigation : System.Windows.Navigation.FragmentNavigationEventHandler
Public Custom Event FragmentNavigation As FragmentNavigationEventHandler
Olay Türü
Örnekler
Aşağıdaki örnek, özel parça gezinti davranışı sağlama işleminin nasıl yapılacağını FragmentNavigation gösterir. Bu durumda örnek, kaynak XAML sayfasındaki parça bulunamazsa bir hata XAML sayfası açar.
void NavigationService_FragmentNavigation(object sender, FragmentNavigationEventArgs e)
{
// Get content the ContentControl that contains the XAML page that was navigated to
object content = ((ContentControl)e.Navigator).Content;
// Find the fragment, which is the FrameworkElement with its Name attribute set
FrameworkElement fragmentElement = LogicalTreeHelper.FindLogicalNode((DependencyObject)content, e.Fragment) as FrameworkElement;
// If fragment found, bring it into view, or open an error page
if (fragmentElement == null)
{
this.NavigationService.Navigate(new FragmentNotFoundPage());
// Don't let NavigationService handle this event, since we just did
e.Handled = true;
}
}
Private Sub NavigationService_FragmentNavigation(ByVal sender As Object, ByVal e As FragmentNavigationEventArgs)
' Get content the ContentControl that contains the XAML page that was navigated to
Dim content As Object = (CType(e.Navigator, ContentControl)).Content
' Find the fragment, which is the FrameworkElement with its Name attribute set
Dim fragmentElement As FrameworkElement = TryCast(LogicalTreeHelper.FindLogicalNode(CType(content, DependencyObject), e.Fragment), FrameworkElement)
' If fragment found, bring it into view, or open an error page
If fragmentElement Is Nothing Then
Me.NavigationService.Navigate(New FragmentNotFoundPage())
' Don't let NavigationService handle this event, since we just did
e.Handled = True
End If
End Sub
Açıklamalar
Varsayılan olarak, içerik parçası, özniteliği ayarlanmış olan adlandırılmış UIElementöğesinin UIElementName içerdiği içeriktir, örneğin:
<TextBlock Name="FragmentName">...</TextBlock>
Aşağıdaki biçimde bir son ek içeren bir URI sağlayarak bir XAML parçasına gidersiniz:
# FragmentName
Aşağıda bir içerik parçasına başvuran bir URI örneği gösterilmektedir:
http://www.microsoft.com/targetpage.xaml#FragmentName
Kaynak sayfa yüklendikten sonra (olay harekete geçirildikten sonra LoadCompleted ), parça gezintisi başlar ve NavigationService XAML parçasını bulmaya çalışır. XAML parçası bulunursa, NavigationService içerik gezginine (NavigationWindow, Frame) parçanın gösterilmesini ister. Bu davranışı değiştirmeniz gerekiyorsa, kendi parça gezinti davranışınızı sağlamak için işleyebilirsiniz FragmentNavigation . FragmentNavigation , aşağıdakiler dahil olmak üzere bu amaç için yararlı olan özellikleri kullanıma sunan bir FragmentNavigationEventArgs parametre geçirilir:
Bu gezinti hizmetinin sahibi olan gezgin (NavigationWindow, Frame).
Parça adı.
Varsayılan WPF parçası uygulamasını kendi özel uygulamanızla geçersiz kılmak için işleyebilirsiniz FragmentNavigation . Bunu yaparsanız olarak ayarlamanız Handledtrue
gerekir; aksi takdirde, varsayılan WPF parça işleme davranışı uygulanır.
Bir olay işleyicisi içinden FragmentNavigation gezintiyi doğrudan başlatmaktan kaçınmanız gerekir. FragmentNavigation Mevcut bir gezinti sırasında tetiklendiğinden, bir olay işleyicisinden FragmentNavigation yeni bir gezinti başlatılması, iç içe yerleştirilmiş bir gezinti oluşturur ve bu da oluşturulabilmesine neden ExecutionEngineException olabilir. Bunun yerine, kullanarak Dispatcherzaman uyumsuz bir iş öğesi oluşturarak dolaylı olarak gezinti başlatabilirsiniz.
Not
yükselttiğinde NavigationServiceFragmentNavigation, nesnesi üzerinde Application de olay oluştururApplication.FragmentNavigation.
Önemli
Parça gezintisi, aşağıdaki durumlarda gevşek XAML sayfalarında (kök öğe olarak yalnızca işaretleme XAML dosyaları Page
) desteklenmez:
• Gevşek bir XAML sayfasındaki bir parçaya gezinirken.
• Gevşek bir XAML sayfasından başka bir gevşek XAML sayfasındaki bir parçaya gezinirken.
Ancak, gevşek bir XAML sayfası kendi parçalarına gidebilir.